【问题标题】:How can I create new df3 from df1 where values are conditional on values in df2?如何从 df1 创建新的 df3,其中值取决于 df2 中的值?
【发布时间】:2020-07-15 23:43:23
【问题描述】:

我有两个 DF,DF1 和 DF2。每个都带有暗淡 (978350,50)。 DF1 是我测量的值的矩阵,DF2 是这些值的误差矩阵。我想创建一个 DF3,如果存储在 DF2 中的错误小于 0.4,则保留 DF1 的所有值。我的 DF1 和 DF2 中也有很多 NA,我想在 DF3 中保留为 NA。

我试过这样做:

for (i in 1:978530){
  for (j in 1:50){
  if (DF2[i,j]<0.41&!is.na(DF2[i,j])){DF3[i,j]<-DF1[i,j]
    } else {DF3[i,j]<-9999}}}

但由于我的尺寸很大,因此需要花费大量时间来计算。我将我的 NA 值设置为 9999,因为键入实际 NA 会引发错误。我希望有一种计算效率更高/更优雅的方式来做到这一点

【问题讨论】:

    标签: r dataframe


    【解决方案1】:
    # copy the data
    DF3 <- DF1
    # change unsatisfied data with NA
    DF3[is.na(DF2) | DF2 >= 0.4] <- NA # or you want it to be 9999
    

    【讨论】:

    • 哇,它运行完美,运行时间不到 60 秒……而我的代码需要几个小时……非常感谢!
    • 酷,也请考虑选择它作为答案。
    • 糟糕!不知道你能做到这一点。只是选择它作为答案。再次感谢!
    猜你喜欢
    • 2021-06-08
    • 2021-03-28
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 2018-04-04
    相关资源
    最近更新 更多