在R中创建一个基于其他列中的信息的列

时间:2014-11-26 14:25:32

标签: r

我的数据集包括CODE,FIRE,CARBON和DEPTH列 CODE列中的数据示例是chic,chiq,lopc,lopq等。

除此之外,我得到了一些信息,其中提到CODES列中的每个值,例如chic属于A,B或C.

所以我想在R中创建一个基于CODE列的新列。因此,当我向R说当CODE例如是chic时,新列中的值在同一行上是A.

我希望有人可以帮助我,

提前致谢!

(我想在这里插入一个列的数据示例,但它没有用,我希望它现在也清楚我要创建的内容)

2 个答案:

答案 0 :(得分:0)

您可以尝试:

yourdata$newcolumn<-sapply(as.character(yourdata$CODE),
                           switch,
                           "chic"="A","code2"="B","code3"="C")

当然,您需要根据数据调整代码,但是您没有提供很多细节......

示例

使用yourdata以下data.frame:

   CODE FIRE CARBON      DEPTH
1  chic    1      3 -1.3107045
2 code2    1      3  1.0781249
3 code3    1      3 -0.6762211
4  chic    1      3  0.9196376
5 code2    2      4 -0.7161380
6 code2    2      4 -0.5506980
7  chic    2      4  0.3323771
8  chic    2      4 -0.4131832

您获得了新的data.frame yourdata

   CODE FIRE CARBON      DEPTH newcolumn
1  chic    1      3 -1.3107045         A
2 code2    1      3  1.0781249         B
3 code3    1      3 -0.6762211         C
4  chic    1      3  0.9196376         A
5 code2    2      4 -0.7161380         B
6 code2    2      4 -0.5506980         B
7  chic    2      4  0.3323771         A
8  chic    2      4 -0.4131832         A

答案 1 :(得分:0)

您也可以使用(假设您的数据位于数据框df中)...

df$NEW[df$CODE == "chic"] <- "A"
df$NEW[df$CODE == "chiq"] <- "B"

df
#   CODE DEPTH CARBON FIRE  NEW
# 1 chic     0   24.2    U    A
# 2 chic    10   25.6    U    A
# 3 chiq     0   20.3    B    B
# 4 chiq     0   50.3    B    B
# 5 chiq    10   40.5    B    B
# 6 chiq    20   24.2    B    B
# 7 polc     0   60.5    U <NA>
# 8 polc    10   10.2    U <NA>
# 9 polq     0   20.5    U <NA>

等...

要一次重新编码多个值,请使用%in%和一个矢量,例如:

df$NEW[df$CODE %in% c("chic", "chiq")] <- "A"

相关问题