【问题标题】:find whether a column exists in R data frame and if not then create it查找 R 数据框中是否存在列,如果不存在则创建它
【发布时间】:2018-06-20 18:00:29
【问题描述】:

我在 R 中有以下数据框

 no     qc6    qc5    qc3     itv6   itv5    itv3
123      12    12     14      8      9       9

现在,我想检查数据框中是否存在以下列,如果不存在,则创建一个包含 0 值的新列。

 qc1,qc2,itv1,itv2

我可以用 R 中的 if 循环来做到这一点

 if(!"qc1" %in% colnames(df))
 {
   df$qc1 <- 0
 }

但是,我将不得不为每个要创建的变量编写循环。有没有更快的方法?

【问题讨论】:

  • 我们为什么要这样做,下一步是什么?

标签: r


【解决方案1】:

如果你有一个你知道应该在其中的名字向量,下面将检查它们是否已经有一个列。如果没有,他们将创建一个值为 0 的。

x <- c( "qc1","qc2","itv1","itv2", "no" )
d <- data.frame( no = 123,    qc6 = 12,    qc5 = 12,    qc3 = 14,     itv6 = 8,   itv5 = 9,    itv3 = 9)

d[x[!(x %in% colnames(d))]] = 0
d

这给出了输出:

 no     qc6    qc5    qc3     itv6   itv5    itv3    qc1    qc2    itv1    itv2
123      12    12     14      8      9       9       0      0      0       0

【讨论】:

    猜你喜欢
    • 2011-05-16
    • 2022-06-13
    • 2011-09-15
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    相关资源
    最近更新 更多