> X1 <- data.frame(A=c("a1","a2","a3","a4"))
> X1
A
1 a1
2 a2
3 a3
4 a4
> y <- data.frame(A=c("b1", " ", " ", "b2"," ", "b3"), B=c("c1","c2","c3","c4","X1","c5"))
> y
A B
1 b1 c1
2 c2
3 c3
4 b2 c4
5 X1
6 b3 c5
我想在表y中做三件事 (1)将表y的B列中的X1替换为表X1中的条目(即a1 ... a4)。 (2)填写表y列A中的所有空白区域。 (3)在表y中添加新列C并用数字“1”
填充所有列新表y预计如下:
A B C
1 b1 c1 1
2 b1 c2 1
3 b1 c3 1
4 b2 c4 1
5 b2 a1 1
6 b2 a2 1
7 b2 a3 1
8 b2 a4 1
9 b3 c5 1
你能不能建议有效的方法,我有大量的X1表,而不仅仅是一个。我必须将这些表的名称与表y的B列相匹配。我可以一个接一个地做,但我相信有更聪明的方法可以做到这一点。请帮助。
答案 0 :(得分:0)
填写A栏:
y$A<-y$A[y$A!=" "][cumsum(y$A!=" ")]
添加C列(来吧,您可以自己找到它!):
y$C=1 #Duh
展开B栏: 如果订单不重要:
x1part<-y[rep(which(y$b=="X1"), each=nrow(X1)),]
x1part$B<-X1$A
cbind(y[y$b!="X1",], x1part)
如果订单很重要:
newy<-y[rep(seq(nrow(y)), ifelse(y$b=="X1", nrow(X1), 1)),]
newy$B[newy$B=="X1"]<-X1$A
请注意,这是未经测试的,但有想法。