【问题标题】:Replace missing values with a value from another column用另一列中的值替换缺失值
【发布时间】:2016-03-22 10:14:52
【问题描述】:

如果我有:

s <- data.frame(ID=c(191, 282, 202, 210), Group=c("", "A", "", "B"), stringsAsFactors=FALSE)
s
   ID Group
1 191      
2 282     A
3 202      
4 210     B

我可以像这样用 N 替换空单元格:

ds$Group[ds$Group==""]<-"N"

s
   ID Group
1 191     N 
2 282     A
3 202     N
4 210     B

但我需要用另一列中的值替换空单元格。我怎样才能做到这一点?:

s
   ID Group Group2
1 191     D      D
2 282     A      G
3 202     G      G
4 210     B      D

【问题讨论】:

标签: r missing-data


【解决方案1】:

我们可以使用data.table将“Group2”中的值分配给“Group”,其中“Group”为“i”条件中指定的""

library(data.table)
setDT(s)[Group=="", Group:= Group2]

当分配发生时,它被认为是有效的。

【讨论】:

    【解决方案2】:

    ifelse(test, yes, no) 是一个方便的函数,它可以用于向量。使用你的最后一个 data.frame:

    s <- data.frame(ID = c(191, 282, 202, 210),
        Group = c("", "A", "", "B"),
        Group2 = c("D", "G", "G", "D"))
    
    s$Group <- ifelse(test = s$Group != "", yes = s$Group, no = s$Group2)
    

    第一个参数是测试。对于向量中的每个值,如果test为真,则取yes中的值,否则取no中的值。

    【讨论】:

      猜你喜欢
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 2023-01-13
      • 2022-06-15
      • 2021-04-13
      • 2017-07-19
      相关资源
      最近更新 更多