我正在处理以下数据。我们可以称之为x
New_Name_List Old_Name_List
1 bumiputera bumiputera (muslims)
2 bumiputera bumiputera (other)
3 non bumiputera non bumiputera (indigenous)
4 chinese chinese
目标是在另一个看起来像这样的数据对象中重新编码数据。我们可以称之为y
EPR_country_code EPR_country EPR_group_lower_2
1 835 Brunei bumiputera (muslims)
2 835 Brunei bumiputera (other)
3 835 Brunei non bumiputera (indigenous)
4 835 Brunei chinese
如果x$New_Name_List
有重复的值,我希望在新列x$Old_Name_List
中输入y$EPR_group_lower_3
的值。
如果x$New_Name_List
具有唯一值,我希望在新列x$New_Name_List
中使用y$EPR_group_lower_3
。
这样数据的结尾将是这样:
EPR_country_code EPR_country EPR_group_lower_2 EPR_group_lower_3
1 835 Brunei bumiputera (muslims) bumiputera (muslims)
2 835 Brunei bumiputera (other) bumiputera (other)
3 835 Brunei non bumiputera (indigenous) non bumiputera
4 835 Brunei chinese chinese
非常感谢您
答案 0 :(得分:1)
我们可以使用get()
并根据ifelse
中的重复值从Old_Name_List
或New_Name_List
中选择值。
New_Name_List
或者找到重复值的索引,然后仅替换这些索引。
y$EPR_group_lower_3 <- with(x, ifelse(duplicated(New_Name_List) |
duplicated(New_Name_List, fromLast = TRUE), Old_Name_List, New_Name_List))
y
# EPR_country_code EPR_country EPR_group_lower_2 EPR_group_lower_3
#1 835 Brunei bumiputera (muslims) bumiputera (muslims)
#2 835 Brunei bumiputera (other) bumiputera (other)
#3 835 Brunei non bumiputera (indigenous) non bumiputera
#4 835 Brunei chinese chinese
数据
y$EPR_group_lower_3 <- x$New_Name_List
inds <- with(x, duplicated(New_Name_List) | duplicated(New_Name_List, fromLast = TRUE))
y$EPR_group_lower_3[inds] <- x$Old_Name_List[inds]