我有一个像这样的列表
month year id
1. 2014. 20.
1. 2014. 305.
1. 2014. 305.
我想创建新变量并将其放入所有非唯一ids =如果是id重复,我想将整个行放入新变量。
month year id
1. 2014. 305.
1. 2014. 305.
我不知道从哪里开始,我认为我应该创建if语句,但我不知道该把它放在里面。
if(duplicated(my_data$id) = TRUE) {
}
答案 0 :(得分:0)
如果我理解正确,您需要group_by
id
并保留id
不止一次出现的所有行。如果是这样,dplyr
的一种方法可能是:
library(dplyr)
df %>%
group_by(id) %>%
filter(n() > 1) %>%
ungroup()
# A tibble: 2 x 3 month year id <dbl> <dbl> <dbl> 1 1. 2014. 305. 2 1. 2014. 305.
如果您的数据结构是一个列表,我认为我们可以使用以下内容将其设为数据框:
# note that you can omit the as.list call assuming your data is already a list
df <- bind_rows(as.list(df))
数据:
Lines <- "month year id
1. 2014. 20.
1. 2014. 305.
1. 2014. 305."
df <- read.table(text = Lines, header = T, stringsAsFactors = F)
答案 1 :(得分:0)
如果数据位于base-R
,则可以在data.frame
中使用一个选项:
df$id[df$id %in% df$id[duplicated(df$id)],]
#month year id
#2 1 2014 305
#3 1 2014 305
#Data
df <- read.table(text =
"month year id
1. 2014. 20.
1. 2014. 305.
1. 2014. 305.", header = TRUE)