我有一个看起来像这样的数据框
DF <- data.frame(x=rep(c("A", "B", "C"), times=1, each=3),
y=c(1,2,3))
给了我
x y
1 A 1
2 A 2
3 A 3
4 B 1
5 B 2
6 B 3
7 C 1
8 C 2
9 C 3
在我的原始数据框中,每列代表一个人。所以我必须匹配单个y的单个y,给我一些像
x y
A 1
B 2
C 3
换句话说,我需要按x分组,但y不能沿数据帧重复。
有什么想法可以提供帮助吗?
我真的在stackoverflow上寻找它,但找不到任何可以帮助我的东西。谢谢!!
答案 0 :(得分:2)
使用dplyr
的解决方案,假设所有组的行数与组号相同。
library(dplyr)
DF2 <- DF %>%
mutate(Group_ID = group_indices(., x)) %>%
group_by(x) %>%
summarise(y = y[first(Group_ID)]) %>%
ungroup()
DF2
# # A tibble: 3 x 2
# x y
# <fct> <dbl>
# 1 A 1
# 2 B 2
# 3 C 3
或者我们可以使用以下内容:
DF2 <- DF %>% filter(as.numeric(x) == y)
DF2
# x y
# 1 A 1
# 2 B 2
# 3 C 3
这是有效的,因为列x
是因素。当我们将其转换为数字时,我们可以直接使用y
中的值进行过滤。