我的数据是宽格式的,如下所示。数据包括名称和四个数据列。
df_wide <- data.frame(
name = c("John", "Smith", "Tom", "Alice"),
area = c("A", "A", "B", "B"),
hello_1 = c(20, 30, 40, 70),
hello_covered = c(60, 89, 76, 87),
world_1 = c(55, 65, 20, 29),
world_1_covered = c(87, 29, 43, 42)
)
我想将其转换为长格式,其中每个名称对应两行和两个数据列。
name area medicine value covered
1 John A hello 20 60
2 John A world 55 87
3 Smith A hello 30 89
4 Smith A world 65 29
5 Tom B hello 40 76
6 Tom B world 20 43
7 Alice B hello 70 87
8 Alice B world 29 42
我尝试使用pivto_longer
,但不是很成功。
4条答案
按热度按时间egmofgnx1#
您可以在
names_to
中设置".value"
,并提供names_sep
或names_pattern
之一来指定应如何拆分列名。des4xlb02#
可以先重命名以便于旋转:
krugob8w3#
tidyverse中的一个可选方法-不简洁,但可能更容易理解:
nr7wwzry4#
这种方法应该适用于额外的 hello_X/world_X 名称,因为这些名称标记了值。
mutate
medicine。