r - 根据条件新建列

标签 r

为了设置场景,我有一组数据,其中两列数据已混合。举个简单的例子:

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/

相关文章:

r - 在图例ggplot中显示实心箭头

r - 构建均值/方差汇总表的快速/优雅方法

r - 如何使用同样漂亮的小标题打印来漂亮地打印数据表?

RStudio 正在执行我两次调用的每个电话

r - (从 Stata 到 R)将 egen-by 转换为 R

r - 在 dplyr 的重命名函数中以字符串形式输入新列名称

滚动滞后差异

r - 用指定颜色的绘图区域外的形状进行注释

r - 控制两个 knitr 并排图之间的距离

r - S4:使用类属性作为类方法的默认输入值