我有一个这样的数据框
day V1 V9 V13 V14 V15 V16
1 1 2 3 0 0 0 0
2 1 5 3 L L 0 0
3 1 5 1 S L L 0
4 1 4 3 S 0 0 0
5 1 5 2 S L L 0
6 1 5 1 S M L 0
7 1 4 1 L L 0 0
8 1 4 1 M S 0 0
9 1 1 3 0 0 0 0
10 1 4 1 S L 0 0
11 2 1 3 0 0 0 0
12 2 2 1 0 0 0 0
13 2 3 3 0 0 0 0
14 2 1 3 0 0 0 0
15 2 1 1 0 0 0 0
16 2 4 3 S 0 0 0
17 2 4 3 S 0 0 0
18 2 3 3 0 0 0 0
19 2 3 1 S 0 0 0
20 2 4 1 L M 0 0
我需要将其转换为如下所示
day V1 V9 V13 V14 V15 V16
1 1 2 3 0 0 0 0
2 5 3 L L 0 0
3 5 1 S L L 0
4 4 3 S 0 0 0
5 5 2 S L L 0
6 5 1 S M L 0
7 4 1 L L 0 0
8 4 1 M S 0 0
9 1 3 0 0 0 0
10 4 1 S L 0 0
11 2 1 3 0 0 0 0
12 2 1 0 0 0 0
13 3 3 0 0 0 0
14 1 3 0 0 0 0
15 1 1 0 0 0 0
16 4 3 S 0 0 0
17 4 3 S 0 0 0
18 3 3 0 0 0 0
19 3 1 S 0 0 0
20 4 1 L M 0 0
这类似于对特定列的多行使用excel merge命令。我无法弄清楚,也许我可以将日值保留在中间以更好地表示。有人可以帮忙吗?
您可以使用空值duplicated
替换day
列中的重复值。
df$day[duplicated(df$day)] <- ''
df
# day V1 V9 V13 V14 V15 V16
#1 1 2 3 0 0 0 0
#2 5 3 L L 0 0
#3 5 1 S L L 0
#4 4 3 S 0 0 0
#5 5 2 S L L 0
#6 5 1 S M L 0
#7 4 1 L L 0 0
#8 4 1 M S 0 0
#9 1 3 0 0 0 0
#10 4 1 S L 0 0
#11 2 1 3 0 0 0 0
#12 2 1 0 0 0 0
#13 3 3 0 0 0 0
#14 1 3 0 0 0 0
#15 1 1 0 0 0 0
#16 4 3 S 0 0 0
#17 4 3 S 0 0 0
#18 3 3 0 0 0 0
#19 3 1 S 0 0 0
#20 4 1 L M 0 0
这会将day
列转换为字符,可能更安全地替换为字符NA
。
数据
df <- structure(list(day = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), V1 = c(2L, 5L, 5L, 4L,
5L, 5L, 4L, 4L, 1L, 4L, 1L, 2L, 3L, 1L, 1L, 4L, 4L, 3L, 3L, 4L
), V9 = c(3L, 3L, 1L, 3L, 2L, 1L, 1L, 1L, 3L, 1L, 3L, 1L, 3L,
3L, 1L, 3L, 3L, 3L, 1L, 1L), V13 = c("0", "L", "S", "S", "S",
"S", "L", "M", "0", "S", "0", "0", "0", "0", "0", "S", "S", "0",
"S", "L"), V14 = c("0", "L", "L", "0", "L", "M", "L", "S", "0",
"L", "0", "0", "0", "0", "0", "0", "0", "0", "0", "M"), V15 = c("0",
"0", "L", "0", "L", "L", "0", "0", "0", "0", "0", "0", "0", "0",
"0", "0", "0", "0", "0", "0"), V16 = c(0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)),
class = "data.frame", row.names = c(NA, -20L))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句