首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何删除数据框中的行?

如何删除数据框中的行?
EN

Stack Overflow用户
提问于 2012-09-08 12:37:33
回答 6查看 1.5M关注 0票数 272

我有一个名为"mydata“的数据框,如下所示:

代码语言:javascript
复制
   A  B  C   D 
1. 5  4  4   4 
2. 5  4  4   4 
3. 5  4  4   4 
4. 5  4  4   4 
5. 5  4  4   4 
6. 5  4  4   4 
7. 5  4  4   4 

我想删除第2,4,6行。例如,如下所示:

代码语言:javascript
复制
   A  B  C   D
1. 5  4  4  4 
3. 5  4  4  4 
5. 5  4  4  4 
7. 5  4  4  4 
EN

回答 6

Stack Overflow用户

发布于 2012-09-08 12:39:37

关键思想是您形成一组想要删除的行,并保留该集合的补数。

在R中,集合的补码由“-”运算符给出。

因此,假设data.frame名为myData

代码语言:javascript
复制
myData[-c(2, 4, 6), ]   # notice the -

当然,如果您想完全删除这些行,请不要忘记“重新分配”myData -否则,R只会打印结果。

代码语言:javascript
复制
myData <- myData[-c(2, 4, 6), ]
票数 411
EN

Stack Overflow用户

发布于 2012-09-08 18:57:18

您还可以使用所谓的布尔向量,也就是logical

代码语言:javascript
复制
row_to_keep = c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE)
myData = myData[row_to_keep,]

请注意,!运算符充当NOT,即!TRUE == FALSE

代码语言:javascript
复制
myData = myData[!row_to_keep,]

与@mrwab的答案(+1 btw:)相比,这看起来有点麻烦,但逻辑向量可以动态生成,例如,当列值超过某个特定值时:

代码语言:javascript
复制
myData = myData[myData$A > 4,]
myData = myData[!myData$A > 4,] # equal to myData[myData$A <= 4,]

可以将布尔向量转换为索引向量:

代码语言:javascript
复制
row_to_keep = which(myData$A > 4)

最后,一个非常巧妙的技巧是,您不仅可以将这种子集用于提取,还可以用于赋值:

代码语言:javascript
复制
myData$A[myData$A > 4,] <- NA

其中,列A被指定为NA (不是数字),其中A超过4。

票数 95
EN

Stack Overflow用户

发布于 2017-05-15 13:51:34

按行号删除的问题

对于快速和肮脏的分析,您可以根据最上面的答案按编号删除data.frame的行。也就是说,

代码语言:javascript
复制
newdata <- myData[-c(2, 4, 6), ] 

但是,如果您正在尝试编写健壮的数据分析脚本,通常应该避免按数字位置删除行。这是因为数据中行的顺序将来可能会更改。data.frame或数据库表的一般原则是行的顺序不重要。如果顺序很重要,则应该将其编码到data.frame中的实际变量中。

例如,假设您导入了一个数据集,并在检查数据并确定了要删除的行的行号后,按数字位置删除了行。但是,在以后的某一时刻,您可以查看原始数据,并对数据进行重新排序。您的行删除代码现在将删除错误的行,更糟糕的是,您不太可能收到任何警告这种情况已经发生的错误。

更好的策略

更好的策略是根据行的实质性和稳定属性删除行。例如,如果您有一个唯一标识每个案例的id列变量,则可以使用该变量。

代码语言:javascript
复制
newdata <- myData[ !(myData$id %in% c(2,4,6)), ]

其他时候,可以指定正式的排除条件,并且可以使用R中的许多子设置工具之一来排除基于该规则的情况。

票数 74
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12328056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档