我有一个名为“mydata”的数据框,看起来像这样:
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行。例如,像这样:
A B C D
1. 5 4 4 4
3. 5 4 4 4
5. 5 4 4 4
7. 5 4 4 4
对于快速和不准确的分析,可以删除数据的行。根据最上面的答案,用数字框起来。即。,
newdata <- myData[-c(2, 4, 6), ]
但是,如果您试图编写一个健壮的数据分析脚本,通常应该避免按数字位置删除行。这是因为数据中的行顺序将来可能会更改。数据处理的一般原则。框架表或数据库表是指行的顺序应该无关紧要。如果顺序确实重要,则应将其编码到数据中的实际变量中。框架
例如,假设您导入了一个数据集,并在检查数据并确定要删除的行的行号后按数字位置删除了行。然而,在稍后的某个时候,您将进入原始数据,并查看周围的数据并重新排序。您的行删除代码现在将删除错误的行,更糟糕的是,您不太可能收到任何错误警告您已经发生了这种情况。
更好的策略是基于行的实质性和稳定属性删除行。例如,如果您有一个id
列变量来唯一地标识每个案例,那么您可以使用它。
newdata <- myData[ !(myData$id %in% c(2,4,6)), ]
其他时候,您将有一个可以指定的正式排除标准,您可以使用R中的许多子集工具之一来排除基于该规则的情况。
您还可以使用所谓的布尔向量,又名逻辑
:
row_to_keep = c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE)
myData = myData[row_to_keep,]
请注意,
运算符充当NOT,即
!真==假
:
myData = myData[!row_to_keep,]
与@mrwab的答案(1 btw:)相比,这似乎有点麻烦,但是逻辑向量可以动态生成,例如,当列值超过某个值时:
myData = myData[myData$A > 4,]
myData = myData[!myData$A > 4,] # equal to myData[myData$A <= 4,]
可以将布尔向量转换为索引向量:
row_to_keep = which(myData$A > 4)
最后,一个非常巧妙的技巧是,您不仅可以将这种子集用于提取,还可以用于赋值:
myData$A[myData$A > 4,] <- NA
其中列
A
被指定为NA
(不是数字),其中A
超过4。
关键的想法是形成一组要删除的行,并保留该组的补码。
在R中,集合的补码由“-”运算符给出。
因此,假设数据。帧
称为myData:
myData[-c(2, 4, 6), ] # notice the -
当然,如果您想完全删除这些行,请不要忘记重新分配myData
-否则,R只会打印结果。
myData <- myData[-c(2, 4, 6), ]
本文向大家介绍如何删除R数据框中的行?,包括了如何删除R数据框中的行?的使用技巧和注意事项,需要的朋友参考一下 这可以通过使用方括号来完成。 示例 假设我们要删除第4、7和9行。我们将执行以下操作-
本文向大家介绍如何从R数据框中删除空行?,包括了如何从R数据框中删除空行?的使用技巧和注意事项,需要的朋友参考一下 在调查或任何其他数据收集媒介期间,无法从所有单位获取所有信息。有时我们得到部分信息,有时什么也没有。因此,数据中的某些行可能完全为空白,而某些行可能具有部分数据。可以删除空白行,并使用有助于处理缺失信息的方法填充其他空值。 示例 考虑下面的数据框,它缺少一些行和一些值- 在这里,我们
问题内容: 我有2个数据框,一个命名为USERS,另一个命名为EXCLUDE。他们两个都有一个名为“电子邮件”的字段。 基本上,我要删除EXERSUDE中包含电子邮件的USERS中的每一行。 我该怎么做? 问题答案: 您可以将和条件一起使用,通过以下方式反转布尔值: 另一个解决方案:
问题内容: 我遇到了一个看似简单的问题:在熊猫数据框中删除唯一的行。基本上与的相反。 假设这是我的数据: 当A和B唯一时,我想删除行,即我只保留行1和2。 我尝试了以下方法: 但是我只能得到第2行,因为唯一性是0、1和3! 问题答案: 选择所有重复行的解决方案: 您可以使用子集和参数来选择所有重复项: 解决方案: 对所有唯一行进行了一些修改的解决方案:
我有一个数据帧df: 然后我想删除列表中指示的具有某些序列号的行,假设这里是然后离开: 如何或什么功能可以做到这一点?
我想按条件从Tarantool空间删除数据。我想达到的结果等于SQL查询: 当我使用此查询时,它以错误结束: 我有空