【发布时间】:2016-03-08 12:24:55
【问题描述】:
我有一个数据框,下面是“数据”,我正在尝试根据条件在其末尾添加一个新列。如果列 data$code 与我的数据框“linked”的第一列中的值匹配,我希望新列采用“linked”第二列中的相应值。如果列 data$code 与我的数据框“linked”的第二列中的值匹配,我希望新列采用“linked”第一列中的相应值。如果列 data$code 与任一列中的任何值都不匹配,我想返回 NA。我尝试了以下代码:
data$new<- ifelse(data$code %in% linked[,1],linked[linked[,1] == data$code,2],ifelse(data$code == linked[,2],linked[linked[,2] %in% data$code,1],NA))
没有返回错误消息,但是,我在新列中没有得到正确的对应值,它们由于某种原因混淆了。我做错了什么?
head(linked)
Col1 Col2
1 123456 654321
2 234567 123456
3 999999 543210
4 102938 546378
5 887765 000998
6 564738 222345
head(data)
code x y z
1 123456 1 2 0
2 999999 2 3 0
3 000998 3 4 0
4 106813 4 6 0
5 222345 5 6 0
6 106815 6 5 0
我想要的结果是:
head(data)
code x y z new
1 123456 1 2 0 654321
2 999999 2 3 0 543210
3 000998 3 4 0 887765
4 106813 4 6 0 NA
5 222345 5 6 0 564738
6 106815 6 5 0 NA
【问题讨论】:
标签: r conditional-statements subset