为了设置场景,我有一组数据,其中两列数据已混合。举个简单的例子:
df1 <- data.frame(Name = c("Bob", "John", "Mark", "Will"), City=c("Apple", "Paris", "Orange", "Berlin"), Fruit=c("London", "Pear", "Madrid", "Orange"))
df2 <- data.frame(Cities = c("Paris", "London", "Berlin", "Madrid", "Moscow", "Warsaw"))
因此,我们有两个小数据集:
> df1
Name City Fruit
1 Bob Apple London
2 John Paris Pear
3 Mark Orange Madrid
4 Will Berlin Orange
> df2
Cities
1 Paris
2 London
3 Berlin
4 Madrid
5 Moscow
6 Warsaw
我的目标是使用 df2 创建一个新列,其中城市位于正确的位置。我对 R 有点陌生,所以我不知道这是如何工作的。
我真的不知道从哪里开始解决这类问题。我的完整数据集要大得多,如果有一种有效的方法来解决这个问题那就太好了!
最佳答案
如果“城市”值仅不同。我们可以循环遍历行,根据“df2”中“城市”的匹配值创建一个逻辑向量,并通过获取顺序中第二个匹配值来与其余值连接
df1[] <- t(apply(df1, 1, function(x)
{
i1 <- x %in% df2$Cities
i2 <- !i1
x1 <- x[i2]
c(x1[1], x[i1], x1[2])}))
-输出
> df1
Name City Fruit
1 Bob London Apple
2 John Paris Pear
3 Mark Madrid Orange
4 Will Berlin Orange
关于r - 根据条件新建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74576940/