r - 如何删除 R 中具有几乎相同列值的行?

标签 r data-cleaning data-wrangling

我有一个包含一列名称的数据集。如果存在具有较高值的​​行,我想删除具有较小“P”值的行。例如,在下面的数据集中,我想删除行 ID 的 3 和 5,因为存在“Texas P5”和“North Dakota P9”。做这个的最好方式是什么?提前致谢!

<表类="s-表"> <头> 身份证 姓名 分数 <正文> 1 明尼苏达 P2 342 2 佛蒙特P7 342 3 德州P4 65 4 新墨西哥州 643 5 北达科他州 P8 78 6 北达科他州 P9 245 7 德克萨斯州 P5 856 8 明尼苏达有限责任公司 342

最佳答案

这是一个基本的 R 方式。使用 ave 将数据按 Name 不包括数字进行拆分,并检查哪个组元素等于其最大元素。 ave 返回与其输入属于同一类的向量,在本例中为字符。因此强制对原始数据框进行逻辑和子集处理。

x<-"
ID  Name    Score
1   'Minnesota P2'  342
2   'Vermont P7'    342
3   'Texas P4'  65
4   'New Mexico'    643
5   'North Dakota P8'   78
6   'North Dakota P9'   245
7   'Texas P5'  856
8   'Minnesota LP'  342"
df1 <- read.table(textConnection(x), header = TRUE)


i <- with(df1, ave(Name, sub("\\d+", "", Name), FUN = \(x){
  x == tail(sort(x), 1)
}))
df1[as.logical(i),]
#>   ID            Name Score
#> 1  1    Minnesota P2   342
#> 2  2      Vermont P7   342
#> 4  4      New Mexico   643
#> 6  6 North Dakota P9   245
#> 7  7        Texas P5   856
#> 8  8    Minnesota LP   342

reprex package 创建于 2022-07-06 (v2.0.1)

关于r - 如何删除 R 中具有几乎相同列值的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72885831/

相关文章:

python - 如何在不使用 python 循环的情况下检测和转换列值的单位?

python - 按小时和天计算员 worker 数

R:将百分比数据框从因子转换为数字

r - 统计模式的空数据变化功能

r - 如何通过循环R下载每年的数据

r - 如何在R中的列中查找非分数值的出现?

r - 根据逻辑列的顺序在 DF 中创建多个新列

r - 如何将sqlite日期转换为R中的日期

R - 基于多个条件匹配来自 2 个数据帧的值(当查找 ID 的顺序是随机的时)

python - 如何在保持 NaN 值的同时使用 pandas.melt()?