我有两个不同的数据框,显示2014年和2015年的问卷调查结果,两者都有相同的列。我想将2014年的唯一行(i,例如ID代码)添加到2015年的数据框中。
问题是所有行都是唯一的(因为有23列),但我只希望添加包含唯一ID代码(其中一列)的行,即回答问卷2014而不是2015年的人
使用rbind.data.frames成功创建" 2014-2015数据帧"但后来我要删除那些包含2014年和2015年回答的ID代码的行,以及那些来自2015年的行。
答案 0 :(得分:0)
使用data.table
和unique
:
library(data.table)
library(magrittr)
# Example data
set.seed(1)
x2014 <- data.table(ID = 1:10, y = rnorm(10))
x2015 <- data.table(ID = 1:10 + 5, y = rnorm(10))
# So IDs 6-10 are duplicate
rbind(x2015, x2014) %>%
setkey(ID) %>%
unique
注意rbind的顺序很重要。如果您希望将2015
保留为保留行的表,则ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$G$42")
必须是第一个。
答案 1 :(得分:0)
如果我正确地解释你:
df2014<-structure(list(ID = 1:7, V1 = structure(c(1L, 1L, 1L, 2L, 2L,
3L, 1L), .Label = c("A", "B", "C"), class = "factor"), V2 = structure(c(2L,
1L, 2L, 1L, 2L, 3L, 1L), .Label = c("A", "B", "C"), class = "factor"),
V3 = structure(c(1L, 1L, 2L, 3L, 3L, 3L, 1L), .Label = c("A",
"B", "C"), class = "factor")), .Names = c("ID", "V1", "V2",
"V3"), class = "data.frame", row.names = c(NA, -7L))
df2015<-structure(list(ID = 4:10, V1 = structure(c(1L, 1L, 1L, 2L, 2L,
3L, 1L), .Label = c("A", "B", "C"), class = "factor"), V2 = structure(c(2L,
1L, 2L, 1L, 2L, 3L, 1L), .Label = c("A", "B", "C"), class = "factor"),
V3 = structure(c(1L, 1L, 2L, 3L, 3L, 3L, 1L), .Label = c("A",
"B", "C"), class = "factor")), .Names = c("ID", "V1", "V2",
"V3"), class = "data.frame", row.names = c(NA, -7L))
library(dplyr)
rbind(dplyr::filter(df2014, !ID %in% intersect(df2014$ID, df2015$ID)), df2015)
结果数据框
ID V1 V2 V3
1 1 A B A
2 2 A A A
3 3 A B B
4 4 A B A
5 5 A A A
6 6 A B B
7 7 B A C
8 8 B B C
9 9 C C C
10 10 A A A