首页 > 解决方案 > R:通过索引删除数据框中的行

问题描述

我刚开始学习 R,我真的需要一些帮助来清理我的数据。我花了最后 2 天试图找到解决方案,但似乎没有任何效果。

我有一个名为d.new. 以下是相关行的示例:

d.new <- cbind(c("abc","abc","abc","def","def","def"),c("yes",NA,NA,"no",NA,NA)) 
colnames(d.new) <- c("observation", "vis") 

我提取了vis == "yes"这样的代码:

idx_vis <- c(select(filter(d.new, vis == "yes"), c(observation)))

输出如下所示:

$observation
[1] "abc" 

现在我想找到所有行,其中我的“观察”列的内容是我的向量中的代码之一(假设它不仅仅是abc几百个代码)并删除它们,但实际上没有对所有内容进行硬编码. 我也想将该脚本用于具有不同代码的其他数据集。

所以我想要的输出将是一个不包含带有某些代码的行的数据框。

我的尝试是编写一个循环,在其中遍历所有行并找到并删除那些行,在其中我找到了来自idx_vis. 我是这样开始的(但我什至不确定这是否有意义,我以前从未写过循环):

for(i in 1:length(d.new$observation)){  
  i2 <- c([i]:length(idx_vis)) 
  idx_dump <- as.character(which(d.new$observation == "idx_vis[i2]"))
  # then delete the rows from idx_dump from d.new?
} 

如果有人能给我一个提示,那就太好了!提前致谢!

梅尔

标签: rloopsindexingdata-cleaning

解决方案


试试这个:d.new[d.new$vis == "yes", ]根据“vis”列中的值选择行。


推荐阅读