df <- data.frame(xy=c("A","A","B","B","C","C"), xz=c("D","E","F","G","H","I"), y=c(1,2,3,4,5,6), z=c(1,2,3,4,5,6))
我试着用y
和xz
分别对列xy
和z
进行pivot_wider
运算,结果如下:
y.A y.B y.C z.D z.E z.F z.G z.H z.I
3 7 11 1 2 3 4 5 6
当xy==A
、xy==B
和xy==C
时有两个匹配项,所以我对这些字母中的每一个的y
值求和,每个字母只得到一列。相反,因为xz
字母都是唯一的,求和只是返回原始值。
我得到的最接近的结果是:
df %>% pivot_wider(names_from=c(xy,xz), values_from=c(y,z), names_sep='.', values_fn=sum)
但这会返回所有的组合
y.A.D y.A.E y.B.F y.B.G y.C.H y.C.I z.A.D z.A.E z.B.F z.B.G z.C.H z.C.I
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 2 2 3 3 1 2 3 4 5 6
2条答案
按热度按时间vnzz0bqm1#
一定有更优雅的东西:
osh3o9ms2#
我的尝试是值得的...