【问题标题】:Remove Data in a data frame based on an index column根据索引列删除数据框中的数据
【发布时间】:2013-03-21 06:18:53
【问题描述】:

像这样查看数据框:

set.seed(3)
Data1<-rnorm(20, mean=20)
Dir_1<-rnorm(20,mean=2)
Data2<-rnorm(20, mean=21)
Dir_2<-rnorm(20,mean=2)
Data3<-rnorm(20, mean=22)
Dir_3<-rnorm(20,mean=2)
Data4<-rnorm(20, mean=19)
Dir_4<-rnorm(20,mean=2)
Data5<-rnorm(20, mean=20)
Dir_5<-rnorm(20,mean=2)
Data6<-rnorm(20, mean=23)
Dir_6<-rnorm(20,mean=2)
Data7<-rnorm(20, mean=21)
Dir_7<-rnorm(20,mean=2)
Data8<-rnorm(20, mean=25)
Dir_8<-rnorm(20,mean=2)
Index<-rnorm(20,mean=5)
DF<-data.frame(Data1,Dir_1,Data2,Dir_2,Data3,Dir_3,Data4,Dir_4,Data5,Dir_5,Data6,Dir_6,Data7,Dir_7,Data8,Dir_8,Index)

我最终得到一个数据框,每个观察值包含两列数据(基于观察 1-8)和一个索引。根据这个索引,我想删除(或做 NA)某些数据观察。

举个例子:

如果索引大于 5,则在该行中删除观察值 8(Data 和 Dir)

如果索引大于 4,则删除该行中的观测值 7 和 8

如果索引大于 3 且小于 3.5,则在该行中删除 6,7,8

我希望提出一系列“if”语句,让我可以根据索引值删除每一行的列。

【问题讨论】:

  • 你是什么意思“为一行删除列”???????是否要将 NA 放在该行的相应列中?
  • 您不能为 data.frame 中的每一行删除不同的列。它必须与 Theodore 建议的列(或)相同,将值替换为 NA。
  • 是的,很抱歉造成混乱。我想将行、列位置设为 NA

标签: r if-statement


【解决方案1】:

假设您想要的不是“删除一行的列”而是将 NA 放入特定行的正确列中,您需要使用一些索引向量而不是一系列 if 语句:

DF[DF$Index>3 & DF$Index<3.5, (6*2-1):(8*2)] <- NA
DF[DF$Index>4, (7*2-1):(8*2)] <- NA
DF[DF$Index>5, (8*2-1):(8*2)] <- NA

【讨论】:

    猜你喜欢
    • 2016-06-01
    • 2020-09-16
    • 1970-01-01
    • 2018-12-04
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 2021-12-06
    相关资源
    最近更新 更多