在不知道变量名称的情况下将数据框重塑为三列宽
Reshape dataframe to be three columns wide without knowing variable names
我有一个列名未知但格式一致的数据框。如何在不使用列名的情况下将其重塑为三列宽?
cpu[,1:6]
Datapoints.Timestamp Datapoints.Maximum Datapoints.Unit Datapoints.Timestamp.1 Datapoints.Maximum.1 Datapoints.Unit.1
1 2019-03-05T08:00:00Z 7.833333 Percent 2019-03-11T22:00:00Z 24.25 Percent
目标
Timestamp Maximum Unit
2019-03-05T08:00:00Z 7.833333 Percent
.....
数据集:
> dput(cpu[,1:6])
structure(list(Datapoints.Timestamp = structure(1L, .Label = "2019-03-05T08:00:00Z", class = "factor"),
Datapoints.Maximum = 7.83333333332848, Datapoints.Unit = structure(1L, .Label = "Percent", class = "factor"),
Datapoints.Timestamp.1 = structure(1L, .Label = "2019-03-11T22:00:00Z", class = "factor"),
Datapoints.Maximum.1 = 24.2500000000048, Datapoints.Unit.1 = structure(1L, .Label = "Percent", class = "factor")), .Names = c("Datapoints.Timestamp",
"Datapoints.Maximum", "Datapoints.Unit", "Datapoints.Timestamp.1",
"Datapoints.Maximum.1", "Datapoints.Unit.1"), class = "data.frame", row.names = c(NA,
-1L))
do.call(rbind, lapply(seq(1, NCOL(df1), 3), function(i)
setNames(df1[,i+(0:2)], colnames(df1)[1:3])))
# Datapoints.Timestamp Datapoints.Maximum Datapoints.Unit
#1 2019-03-05T08:00:00Z 7.833333 Percent
#2 2019-03-11T22:00:00Z 24.250000 Percent
我有一个列名未知但格式一致的数据框。如何在不使用列名的情况下将其重塑为三列宽?
cpu[,1:6]
Datapoints.Timestamp Datapoints.Maximum Datapoints.Unit Datapoints.Timestamp.1 Datapoints.Maximum.1 Datapoints.Unit.1
1 2019-03-05T08:00:00Z 7.833333 Percent 2019-03-11T22:00:00Z 24.25 Percent
目标
Timestamp Maximum Unit
2019-03-05T08:00:00Z 7.833333 Percent
.....
数据集:
> dput(cpu[,1:6])
structure(list(Datapoints.Timestamp = structure(1L, .Label = "2019-03-05T08:00:00Z", class = "factor"),
Datapoints.Maximum = 7.83333333332848, Datapoints.Unit = structure(1L, .Label = "Percent", class = "factor"),
Datapoints.Timestamp.1 = structure(1L, .Label = "2019-03-11T22:00:00Z", class = "factor"),
Datapoints.Maximum.1 = 24.2500000000048, Datapoints.Unit.1 = structure(1L, .Label = "Percent", class = "factor")), .Names = c("Datapoints.Timestamp",
"Datapoints.Maximum", "Datapoints.Unit", "Datapoints.Timestamp.1",
"Datapoints.Maximum.1", "Datapoints.Unit.1"), class = "data.frame", row.names = c(NA,
-1L))
do.call(rbind, lapply(seq(1, NCOL(df1), 3), function(i)
setNames(df1[,i+(0:2)], colnames(df1)[1:3])))
# Datapoints.Timestamp Datapoints.Maximum Datapoints.Unit
#1 2019-03-05T08:00:00Z 7.833333 Percent
#2 2019-03-11T22:00:00Z 24.250000 Percent