【发布时间】:2017-04-13 20:45:15
【问题描述】:
一位同事有一些由许多稀疏列组成的数据,应该折叠成几个填充的列。例如:
d1 <- data.frame(X1 = c(rep("Northampton", times=3), rep(NA, times=7)),
X2 = c(rep(NA, times=3), rep("Amherst", times=5), rep(NA, times=2)),
X3 = c(rep(NA, times=8), rep("Hadley", times=2)),
X4 = c(rep("Stop and Shop", times=2), rep(NA, times=6), rep("Stop and Shop", times=2)),
X5 = c(rep(NA, times=2), rep("Whole Foods", times=6), rep(NA, times=2)))
d1
X1 X2 X3 X4 X5
1 Northampton <NA> <NA> Stop and Shop <NA>
2 Northampton <NA> <NA> Stop and Shop <NA>
3 Northampton <NA> <NA> <NA> Whole Foods
4 <NA> Amherst <NA> <NA> Whole Foods
5 <NA> Amherst <NA> <NA> Whole Foods
6 <NA> Amherst <NA> <NA> Whole Foods
7 <NA> Amherst <NA> <NA> Whole Foods
8 <NA> Amherst <NA> <NA> Whole Foods
9 <NA> <NA> Hadley Stop and Shop <NA>
10 <NA> <NA> Hadley Stop and Shop <NA>
X1:X3 应折叠到名为 Town 的一列中,X4:X5 应折叠到名为 Store 的一列中。这里必须有一个 tidyverse 解决方案。我试过gather() 和unite(),但没有发现任何优雅的东西。
【问题讨论】: