【发布时间】:2017-12-30 11:26:22
【问题描述】:
我有以下 2 个要合并的数据框:
x <- data.frame(a= 1:11, b =3:13, c=2:12, d=7:17, invoice = 1:11)
x =
a b c d invoice
1 3 2 7 1
2 4 3 8 2
3 5 4 9 3
4 6 5 10 4
5 7 6 11 5
6 8 7 12 6
7 9 8 13 7
8 10 9 14 8
9 11 10 15 9
10 12 11 16 10
11 13 12 17 11
y <- data.frame(nr = 100:125, invoice = 1)
y$invoice[12:26] <- 2
> y
nr invoice
100 1
101 1
102 1
103 1
104 1
105 1
106 1
107 1
108 1
109 1
110 1
111 2
112 2
113 2
114 2
115 2
116 2
117 2
当发票编号相同时,我想将数据框 X 中的字母与数据框 Y 合并。它应该从合并字母 A 的值开始,然后是 B 等。这应该一直发生,直到发票编号不再相同,然后从发票编号 2 中选择编号。
输出应该是这样的:
> output
nr invoice letter_count
100 1 1
101 1 3
102 1 2
103 1 7
104 1 1
105 1 3
106 1 2
107 1 7
108 1 1
109 1 2
110 1 7
111 2 2
112 2 4
113 2 3
114 2 8
115 2 2
116 2 4
我尝试将merge 函数与by 参数一起使用,但这会产生行数不同的错误。任何帮助我都会感激。
【问题讨论】:
-
我无法弄清楚您是如何在这里获得
letter_count值的。在这种情况下,我认为merge不会像您认为的那样做。你可能想看看aggregate。 -
这个问题我不太清楚。
-
您需要
do.call和apply并且需要`cbind. I don't thinkmerge`。也许是发票的条件。 -
letter_count是来自A,B,C,D的值,对应于invoice nr