此帖子与此我的帖子相似 matching dataset with data in csv file in R,但这里是此外部csv文件的另一个外部源和结构,以及三个组,因此存在问题。
我有一个只有一列的csv文件
,"x"
1,"11202 3322 2018"
2,"11271 3322 2018"
3,"11353 2261 2018"
4,"11353 3322 2018"
5,"11353 3380 2018"
6,"11418 2247 2018"
7,"11418 2261 2018"
8,"11418 2316 2018"
9,"11418 3322 2018"
10,"11418 3740 2018"
11,"11511 979 2018"
12,"11514 196 2017"
13,"11514 377 2017"
3个组用空格表示。 是卑鄙的
group1,group2,group3
11202, 3322, 2018
此格式来自外部来源,我无法更改。
有我的数据。
dataset=structure(list(group1 = c(11202L, 11271L, 11353L, 11353L, 11353L,
11418L, 11418L, 11418L, 11418L, 11222L, 11223L, 11224L, 11225L,
11226L, 11227L, 11228L), group2 = c(3322L, 3322L, 2261L, 3322L,
3380L, 2247L, 2261L, 2316L, 3322L, 222L, 222L, 222L, 222L, 222L,
222L, 222L), group3 = c(2018L, 2018L, 2018L, 2018L, 2018L, 2018L,
2018L, 2018L, 2018L, 111L, 111L, 111L, 111L, 111L, 111L, 111L
), x1 = 1:16), .Names = c("group1", "group2", "group3", "x1"), class = "data.frame", row.names = c(NA,
-16L))
所以这些组在外部的csv文件中
group1 group2 group3 x1
11202 3322 2018 1
11271 3322 2018 2
11353 2261 2018 3
11353 3322 2018 4
11353 3380 2018 5
11418 2247 2018 6
11418 2261 2018 7
11418 2316 2018 8
11418 3322 2018 9
我不使用它。 我必须和新小组一起工作。 因此输出数据集
group1 group2 group3 x1
11222 222 111 10
11223 222 111 11
11224 222 111 12
11225 222 111 13
11226 222 111 14
11227 222 111 15
11228 222 111 16
如何进行这种匹配。这里有三个关键列。
dim(数据集) [1] 16 4
答案 0 :(得分:2)
我假设您有两列,也假设第一列只是一个序列(正如您在我的假设中回答的那样,我认为我的假设正确),如果您只有一个列,请执行与我提到的相同的操作下面使用“,”作为模式,然后丢弃结果数据帧的第一列
data<-data.frame(col=c("1 2 3","5 6 7"))
col
1 2 3
5 6 7
out<-do.call('rbind',(str_split(data$col,pattern = " ")))
colnames(out)<-c('group1','group2','group3')
print(out)
group1 group2 group3
"1" "2" "3"
"5" "6" "7"