【问题标题】:Mutate a column considering only a subset of rows仅考虑行的子集来改变列
【发布时间】:2020-06-26 22:04:00
【问题描述】:

我在使用dpylr 处理数据时遇到了一些麻烦。基本上我有一个这样的数据集:

test <- data.frame(
  var1 = rnorm(10, 10, 3),
  var2 = rnorm(10, 20, 6),
  var3 = c(rnorm(7, 20, 6), NA, NA, NA)
)

> test
        var1      var2     var3
1   8.882003 16.222680 21.46382
2   7.220067 22.296354 22.88066
3  11.060342 27.886035 16.01724
4   6.165811  6.320757 20.76175
5   7.599280 29.168573 11.54408
6   7.807514 19.811270 15.10216
7   6.518541 28.733050 17.15341
8   7.601128 13.063873       NA
9   5.992121 24.232977       NA
10  6.510580 24.478872       NA

var3 假设计算为var1 + var2,所以我想在var3 中填充 NA 值,计算 var1 + var2(或使用 columns 的任何操作),但仅适用于具有 NA 的行价值观。我该怎么办?

【问题讨论】:

  • 使用 data.table 这将是解决方案:library(data.table); setDT(test)[is.na(var3), var3 := var 1 + var2]
  • 或以 R 为基数:ix &lt;- is.na(test$var3); test$var3[ix] &lt;- rowSums(test[ix, 1:2])

标签: r dplyr


【解决方案1】:
... %>% mutate(var3=ifelse(is.na(var3), var1 + var2, var3))

【讨论】:

    【解决方案2】:

    使用基础 R:

    test$var3 <- ifelse(is.na(test$var3), test$var1 + test$var2, test$var3)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 2014-02-18
      • 2021-01-24
      • 2016-12-27
      • 1970-01-01
      • 2013-07-08
      相关资源
      最近更新 更多