你好,我有一个数据集,每组3-5行,如下所示,我想把一些列在一个较长的格式,并在一个更广泛的格式列。
下面的第一个数据集表示原始格式,我想将其转换为第二个数据集。我使用了pivot wider = c(“Jan”,“Feb”),但我无法同时将Type列旋转得更长。
data <- as.data.frame(matrix(ncol=5, nrow=6))
colnames(data) <- c("names", "group", "Type", "Jan", "Feb")
data$names <- c("P1", "P1", "P1", "P2", "P2", "P2")
data$group <- "S"
data$Type <- c("Beg", "Middle", "End", "Beg", "Middle", "End")
data$Jan <- c(1, 2, 3, 10, 5, 15)
data$Feb <- c(5, 5, 10, 5, 2, 7)
names group Type Jan Feb
1 P1 S Beg 1 5
2 P1 S Middle 2 5
3 P1 S End 3 10
4 P2 S Beg 10 5
5 P2 S Middle 5 2
6 P2 S End 15 7
data_transformed <- as.data.frame(matrix(ncol=6, nrow=4))
colnames(data_transformed) <- c("names", "group", "Month", "Beg", "Middle", "End")
data_transformed$names <- c("P1", "P1", "P2", "P2")
data_transformed$group <- "S"
data_transformed$Month <- c("Jan", "Feb")
data_transformed$Beg <- c(1, 10, 5, 5)
data_transformed$Middle <- c(2, 5, 5, 2)
data_transformed$End <- c(2, 15, 10, 7)
names group Month Beg Middle End
1 P1 S Jan 1 2 2
2 P1 S Feb 10 5 15
3 P2 S Jan 5 5 10
4 P2 S Feb 5 2 7
字符串
3条答案
按热度按时间hfyxw5xn1#
在这里,我们需要一个
pivot_longer
+pivot_wider
,即首先将col
sJan
整形为“long”,然后将long整形为更宽的格式,列名从“Type”字符串
型
或使用
reshape2
中的recast
型
lnlaulya2#
使用
dcast
+melt
的data.table
选项字符串
给
型
wxclj1h53#
这已经晚了好几年,但是procs包中的
proc_transpose
(当时可能还不存在于CRAN上)可以按组转置。代码下面指定分组依据的列(
by=
)。id列(id=
)是成为输出数据框中列名的输入列。此处无需指定,因为在移除两个分组列后只剩下一个字符列,并且默认情况下假定单个字符列为id
列。新的输出中保存输入中列名的列(name=
)被指定为"Month"
,但如果默认值NAME
足够,则可以省略。字符串