我有一个数据帧,该数据帧由一列中的许多ID号和另一列中的虚拟变量组成。数据帧具有相同ID的多次迭代,但是伪值不一致。例如:
ID dummy
1 1111 1
2 1111 1
3 1111 0
4 1112 0
5 1112 0
6 1112 0
7 1112 0
8 1113 1
9 1113 0
10 1113 1
我想要的是获取所有这些单独的ID编号以及虚拟值1(如果它的单个实例为1,否则为0)的我自己的数据帧。一直发生的是,当我尝试分离重复项时,有时留下的虚拟值为0而不是1。这是我尝试获取的示例:
ID dummy
1 1111 1
2 1112 0
3 1113 1
请帮助。
答案 0 :(得分:1)
library(dplyr)
df %>% group_by(ID) %>%
mutate(dummy1=max(dummy)) %>% filter(row_number()==1) %>%
#dplyr::distinct(ID, .keep_all=T) %>% #Another option
select(-dummy1)
# A tibble: 3 x 2
# Groups: ID [3]
ID dummy
<int> <int>
1 1111 1
2 1112 0
3 1113 1
数据
df <- read.table(text="
ID dummy
1 1111 1
2 1111 1
3 1111 0
4 1112 0
5 1112 0
6 1112 0
7 1112 0
8 1113 1
9 1113 0
10 1113 1
",header=T, stringsAsFactors = F)
答案 1 :(得分:1)
这不只是
df[!duplicated(df$ID), ]
# ID dummy
#1 1111 1
#4 1112 0
#8 1113 1
这将以自上而下的方式删除所有重复的ID
。