首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用R匹配在一列中具有相同值的data.frame的行

如何使用R匹配在一列中具有相同值的data.frame的行
EN

Stack Overflow用户
提问于 2020-07-09 01:31:39
回答 1查看 51关注 0票数 1

我有一个像data这样的data.frame。在名为value的列中,相同的值多次出现(在多行中)。我想要匹配具有相同值的行,以便找到它们的ids。换句话说,我希望In "P1“、"P3”和"P4“具有等于24.7386760的相同值,并且In”P2“和"P6”具有等于21.9178082的相同值。

我使用了duplicated函数来发现重复的值,然后使用filter函数来保留具有确切值的行。我已经尝试过以下代码:

代码语言:javascript
复制
id <- c("P1", "P2", "P3", "P4", "P5", "P6")
value <- c(24.7386760, 21.9178082, 24.7386760, 24.7386760, 20.7441860, 21.9178082)
data <- as.data.frame(cbind(id,value))

duplicates <- data$value[duplicated(data$value) | duplicated(data$value, fromLast=TRUE)]
View(duplicates)

library(dplyr)
cat1 <- filter(data,data$value == 24.7386760)
cat2 <- filter(data,data$value == 21.9178082)

即使它可以对少量不同的值起作用,它也不能对很多值起作用,比如我真正的问题值。

对此有什么想法吗?谢谢

EN

Stack Overflow用户

发布于 2020-07-09 01:42:30

您是否希望使用类似于分组的价值观?

代码语言:javascript
复制
split(data, data$value)

$`20.744186`
  id     value
5 P5 20.744186

$`21.9178082`
  id      value
2 P2 21.9178082
6 P6 21.9178082

$`24.738676`
  id     value
1 P1 24.738676
3 P3 24.738676
4 P4 24.738676

或者,您可能更喜欢下面的输出:

代码语言:javascript
复制
aggregate(id ~ value, data, paste)

       value         id
1  20.744186         P5
2 21.9178082     P2, P6
3  24.738676 P1, P3, P4

没有重复项的aggregate

代码语言:javascript
复制
aggregate(id ~ value, data[data$value %in% duplicates,], paste)

       value         id
1 21.9178082     P2, P6
2  24.738676 P1, P3, P4
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62800405

复制
相关文章

相似问题

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