【问题标题】:fill data frame rows with new values用新值填充数据框行
【发布时间】:2015-04-21 14:36:48
【问题描述】:

我想用预先存在的数据(根据一列的名称)来拟合一个空数据框。假设我的空数据是:

        #define empty data.frame
        predictor.names <- c("LO3","Tx","Gh","RH","SR","ST","TC","U10","WF","SF","F","VW","VS","V","D","day")
        dat <- data.frame("pred"=predictor.names,"MAM"=0)
        rownames(dat) <- predictor.names

现在,我想用以下值填充行:

          x  Freq
         SR   392
         RH   350
         day  253
          Tx   90
         LO3   28
          ST    7
          TC    5
          WF    5
          VS    2
          SF    1

然后,我尝试了:

       dat[which(dat$pred%in%temp[[1]]),2] <- temp[[2]]

但它不起作用,因为变量的顺序不同.. 它将 392 添加到第一个 LO3 等等.. 所以我想用一个循环来做到这一点..但必须有另一种更简单的方法.. 有什么想法/建议吗?

提前致谢!

【问题讨论】:

  • 太棒了!非常感谢,它成功了!
  • 您也可以只合并,但如果您想要 0,则需要另一个步骤将 NA 替换为 0 merge(dat[, -2, drop = FALSE], temp, by.x = 'pred', by.y = 'x', all.x = TRUE)

标签: r


【解决方案1】:

您可以尝试使用match 获取数字索引并将其用于分配值。

 indx <- match(temp$x, dat$pred)
 dat$MAM[indx] <- temp$Freq

数据

 temp <- structure(list(x = c("SR", "RH", "day", "Tx", "LO3", "ST", 
 "TC", 
 "WF", "VS", "SF"), Freq = c(392L, 350L, 253L, 90L, 28L, 7L, 5L, 
 5L, 2L, 1L)), .Names = c("x", "Freq"), class = "data.frame",
 row.names = c(NA, -10L))

【讨论】:

    猜你喜欢
    • 2013-12-23
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 2023-03-14
    • 2013-03-10
    • 2019-01-21
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多