首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取其他两列具有相同值对的数据框行

提取其他两列具有相同值对的数据框行
EN

Stack Overflow用户
提问于 2017-10-21 20:59:38
回答 2查看 140关注 0票数 0

我正在尝试提取X2和X3是同一对值的X1的值。

代码语言:javascript
复制
  X1 X2  X3
1  1  1   8
2  2  4   8
3  3  4   8
4  4 90 199
5  5  3   9 
6  6  3   9

我可以给出这样的命令

代码语言:javascript
复制
subset(df, df$X2==4 & df$X3==8)

它会把我送回来

代码语言:javascript
复制
  X1 X2 X3
2  2  4  8
3  3  4  8

但是,我如何才能使其动态化呢?所以它会返回

代码语言:javascript
复制
  X1 X2 X3
2  2  4  8
3  3  4  8
5  5  3  9 
6  6  3  9
EN

回答 2

Stack Overflow用户

发布于 2017-10-21 21:26:25

一种使用dplyr实现这一点的方法。统计每对(X2,X3)的出现次数,filter对出现多次,将它们连接到初始data.frame中:

代码语言:javascript
复制
df <- tribble(~X1, ~X2,  ~X3,
  1,  1,   8,
  2,  4,   8,
  3,  4,   8,
  4, 90, 199,
 5,  3,   9,
  6,  3,   9)

df2 <- df %>% 
  group_by(X2, X3) %>% 
  count() %>% 
  ungroup()
df2 
# A tibble: 4 x 3
#     X2    X3     n
#  <dbl> <dbl> <int>
#1     1     8     1
#2     3     9     2
#3     4     8     2
#4    90   199     1

df2 %>%  
  filter(n>1) %>% 
  select(-n) %>% 
  left_join(df, by = c("X2","X3"))

# A tibble: 4 x 3
#     X2    X3    X1
#  <dbl> <dbl> <dbl>
#1     3     9     5
#2     3     9     6
#3     4     8     2
#4     4     8     3
票数 1
EN

Stack Overflow用户

发布于 2017-10-21 21:46:02

输入

代码语言:javascript
复制
df <- data.frame(x1 = c(1,2,3,5,4,6), x2 = c(3,4,5,3,6,6), x3 = c(4,4,2,4,2,2))
df
#   x1 x2 x3
# 1  1  3  4
# 2  2  4  4
# 3  3  5  2
# 4  5  3  4
# 5  4  6  2
# 6  6  6  2

配对x2 x3

使用x1创建df1,并将x2x3值对作为一列

代码语言:javascript
复制
df1 <- data.frame(x1 = df$x1, pair = paste(df$x2,df$x3, sep = ","))
df1
#   x1 pair
# 1  1  3,4
# 2  2  4,4
# 3  3  5,2
# 4  5  3,4
# 5  4  6,2
# 6  6  6,2

所需的输出

df中提取频率大于1的行,即,如果任何x2, x3对的频率大于1,则将在df1的帮助下从df中提取这些对

代码语言:javascript
复制
df[df1$pair %in% names(which(table(df1$pair) > 1)),]
#   x1 x2 x3
# 1  1  3  4
# 4  5  3  4
# 5  4  6  2
# 6  6  6  2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46863460

复制
相关文章

相似问题

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