如何从 r 中的输出中提取特定数据帧?
How to extract specific dataframe from an output in r?
我有如下输出;
在我的输出中有几个这样的集群。如您所见,有 2 列(第 1 天和第 2 天)。我想提取(或导出)每天以 Hour_1
开头的数据帧。
所以对于 Cluster 1
,我想要 2 个数据帧,一个以 0.00, 0, 0...
开始,一直持续到 Hour_24
,另一个以 1.07, 0, 0...
开始并一直持续到 Hour_24
。
这是我的数据结构;
v1<-structure(list(`Cluster 1` = structure(list(Day = c(1, 2), Season = c(1,
1), Year = c(2011, 2011), Daily = c(1.48, 2.53), Hour_1 = c(0,
1.07), Hour_2 = c(0, 0), Hour_3 = c(0, 0), Hour_4 = c(0, 0),
Hour_5 = c(0, 0), Hour_6 = c(0, 1.27), Hour_7 = c(0, 0.19
), Hour_8 = c(0, 0), Hour_9 = c(0, 0), Hour_10 = c(0, 0),
Hour_11 = c(0, 0), Hour_12 = c(0, 0), Hour_13 = c(0, 0),
Hour_14 = c(0, 0), Hour_15 = c(0, 0), Hour_16 = c(0, 0),
Hour_17 = c(0, 0), Hour_18 = c(0.041, 0), Hour_19 = c(0.673,
0), Hour_20 = c(0, 0), Hour_21 = c(0, 0), Hour_22 = c(0,
0), Hour_23 = c(0.319, 0), Hour_24 = c(0.447, 0)), .Names = c("Day",
"Season", "Year", "Daily", "Hour_1", "Hour_2", "Hour_3", "Hour_4",
"Hour_5", "Hour_6", "Hour_7", "Hour_8", "Hour_9", "Hour_10",
"Hour_11", "Hour_12", "Hour_13", "Hour_14", "Hour_15", "Hour_16",
"Hour_17", "Hour_18", "Hour_19", "Hour_20", "Hour_21", "Hour_22",
"Hour_23", "Hour_24"), row.names = c("Day_1", "Day_2"), class = "data.frame"),
`Cluster 2` = structure(list(Day = c(7, 8), Season = c(1,
1), Year = c(2011, 2011), Daily = c(0.19, 0.75), Hour_1 = c(0,
0), Hour_2 = c(0, 0.521), Hour_3 = c(0, 0.229), Hour_4 = c(0,
0), Hour_5 = c(0, 0), Hour_6 = c(0, 0), Hour_7 = c(0, 0),
Hour_8 = c(0, 0), Hour_9 = c(0, 0), Hour_10 = c(0, 0),
Hour_11 = c(0, 0), Hour_12 = c(0, 0), Hour_13 = c(0,
0), Hour_14 = c(0, 0), Hour_15 = c(0, 0), Hour_16 = c(0,
0), Hour_17 = c(0.189, 0), Hour_18 = c(0.001, 0), Hour_19 = c(0,
0), Hour_20 = c(0, 0), Hour_21 = c(0, 0), Hour_22 = c(0,
0), Hour_23 = c(0, 0), Hour_24 = c(0, 0)), .Names = c("Day",
"Season", "Year", "Daily", "Hour_1", "Hour_2", "Hour_3",
"Hour_4", "Hour_5", "Hour_6", "Hour_7", "Hour_8", "Hour_9",
"Hour_10", "Hour_11", "Hour_12", "Hour_13", "Hour_14", "Hour_15",
"Hour_16", "Hour_17", "Hour_18", "Hour_19", "Hour_20", "Hour_21",
"Hour_22", "Hour_23", "Hour_24"), row.names = c("Day_3",
"Day_4"), class = "data.frame")), .Names = c("Cluster 1",
"Cluster 2"))
您可以将所有以 "Hour" 开头的列集中在一起。
lapply(v1, function(x) x[grep('Hour', names(x))])
#$`Cluster 1`
# Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8...
#Day_1 0.00 0 0 0 0 0.00 0.00 0...
#Day_2 1.07 0 0 0 0 1.27 0.19 0...
#$`Cluster 2`
# Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8...
#Day_3 0 0.000 0.000 0 0 0 0 0...
#Day_4 0 0.521 0.229 0 0 0 0 0...
如果你想每天分开,你可以使用asplit
lapply(v1, function(x) asplit(x[grep('Hour', names(x))], 1))
选项tidyverse
library(purrr)
library(dplyr)
map(v1, ~ .x %>%
select(contains('Hour')))
#$`Cluster 1`
# Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8 Hour_9 Hour_10 #Hour_11 Hour_12 Hour_13
#Day_1 0.00 0 0 0 0 0.00 0.00 0 0 0 0 0 0
#Day_2 1.07 0 0 0 0 1.27 0.19 0 0 0 0 0 0
# Hour_14 Hour_15 Hour_16 Hour_17 Hour_18 Hour_19 Hour_20 Hour_21 Hour_22 #Hour_23 Hour_24
#Day_1 0 0 0 0 0.041 0.673 0 0 0 0.319 0.447
#Day_2 0 0 0 0 0.000 0.000 0 0 0 0.000 0.000
#$`Cluster 2`
# Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8 Hour_9 Hour_10 #Hour_11 Hour_12 Hour_13
#Day_3 0 0.000 0.000 0 0 0 0 0 0 0 0 0 0
#Day_4 0 0.521 0.229 0 0 0 0 0 0 0 0 0 0
# Hour_14 Hour_15 Hour_16 Hour_17 Hour_18 Hour_19 Hour_20 Hour_21 Hour_22 #Hour_23 Hour_24
#Day_3 0 0 0 0.189 0.001 0 0 0 0 0 0
#Day_4 0 0 0 0.000 0.000 0 0 0 0 0 0
我有如下输出;
在我的输出中有几个这样的集群。如您所见,有 2 列(第 1 天和第 2 天)。我想提取(或导出)每天以 Hour_1
开头的数据帧。
所以对于 Cluster 1
,我想要 2 个数据帧,一个以 0.00, 0, 0...
开始,一直持续到 Hour_24
,另一个以 1.07, 0, 0...
开始并一直持续到 Hour_24
。
这是我的数据结构;
v1<-structure(list(`Cluster 1` = structure(list(Day = c(1, 2), Season = c(1,
1), Year = c(2011, 2011), Daily = c(1.48, 2.53), Hour_1 = c(0,
1.07), Hour_2 = c(0, 0), Hour_3 = c(0, 0), Hour_4 = c(0, 0),
Hour_5 = c(0, 0), Hour_6 = c(0, 1.27), Hour_7 = c(0, 0.19
), Hour_8 = c(0, 0), Hour_9 = c(0, 0), Hour_10 = c(0, 0),
Hour_11 = c(0, 0), Hour_12 = c(0, 0), Hour_13 = c(0, 0),
Hour_14 = c(0, 0), Hour_15 = c(0, 0), Hour_16 = c(0, 0),
Hour_17 = c(0, 0), Hour_18 = c(0.041, 0), Hour_19 = c(0.673,
0), Hour_20 = c(0, 0), Hour_21 = c(0, 0), Hour_22 = c(0,
0), Hour_23 = c(0.319, 0), Hour_24 = c(0.447, 0)), .Names = c("Day",
"Season", "Year", "Daily", "Hour_1", "Hour_2", "Hour_3", "Hour_4",
"Hour_5", "Hour_6", "Hour_7", "Hour_8", "Hour_9", "Hour_10",
"Hour_11", "Hour_12", "Hour_13", "Hour_14", "Hour_15", "Hour_16",
"Hour_17", "Hour_18", "Hour_19", "Hour_20", "Hour_21", "Hour_22",
"Hour_23", "Hour_24"), row.names = c("Day_1", "Day_2"), class = "data.frame"),
`Cluster 2` = structure(list(Day = c(7, 8), Season = c(1,
1), Year = c(2011, 2011), Daily = c(0.19, 0.75), Hour_1 = c(0,
0), Hour_2 = c(0, 0.521), Hour_3 = c(0, 0.229), Hour_4 = c(0,
0), Hour_5 = c(0, 0), Hour_6 = c(0, 0), Hour_7 = c(0, 0),
Hour_8 = c(0, 0), Hour_9 = c(0, 0), Hour_10 = c(0, 0),
Hour_11 = c(0, 0), Hour_12 = c(0, 0), Hour_13 = c(0,
0), Hour_14 = c(0, 0), Hour_15 = c(0, 0), Hour_16 = c(0,
0), Hour_17 = c(0.189, 0), Hour_18 = c(0.001, 0), Hour_19 = c(0,
0), Hour_20 = c(0, 0), Hour_21 = c(0, 0), Hour_22 = c(0,
0), Hour_23 = c(0, 0), Hour_24 = c(0, 0)), .Names = c("Day",
"Season", "Year", "Daily", "Hour_1", "Hour_2", "Hour_3",
"Hour_4", "Hour_5", "Hour_6", "Hour_7", "Hour_8", "Hour_9",
"Hour_10", "Hour_11", "Hour_12", "Hour_13", "Hour_14", "Hour_15",
"Hour_16", "Hour_17", "Hour_18", "Hour_19", "Hour_20", "Hour_21",
"Hour_22", "Hour_23", "Hour_24"), row.names = c("Day_3",
"Day_4"), class = "data.frame")), .Names = c("Cluster 1",
"Cluster 2"))
您可以将所有以 "Hour" 开头的列集中在一起。
lapply(v1, function(x) x[grep('Hour', names(x))])
#$`Cluster 1`
# Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8...
#Day_1 0.00 0 0 0 0 0.00 0.00 0...
#Day_2 1.07 0 0 0 0 1.27 0.19 0...
#$`Cluster 2`
# Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8...
#Day_3 0 0.000 0.000 0 0 0 0 0...
#Day_4 0 0.521 0.229 0 0 0 0 0...
如果你想每天分开,你可以使用asplit
lapply(v1, function(x) asplit(x[grep('Hour', names(x))], 1))
选项tidyverse
library(purrr)
library(dplyr)
map(v1, ~ .x %>%
select(contains('Hour')))
#$`Cluster 1`
# Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8 Hour_9 Hour_10 #Hour_11 Hour_12 Hour_13
#Day_1 0.00 0 0 0 0 0.00 0.00 0 0 0 0 0 0
#Day_2 1.07 0 0 0 0 1.27 0.19 0 0 0 0 0 0
# Hour_14 Hour_15 Hour_16 Hour_17 Hour_18 Hour_19 Hour_20 Hour_21 Hour_22 #Hour_23 Hour_24
#Day_1 0 0 0 0 0.041 0.673 0 0 0 0.319 0.447
#Day_2 0 0 0 0 0.000 0.000 0 0 0 0.000 0.000
#$`Cluster 2`
# Hour_1 Hour_2 Hour_3 Hour_4 Hour_5 Hour_6 Hour_7 Hour_8 Hour_9 Hour_10 #Hour_11 Hour_12 Hour_13
#Day_3 0 0.000 0.000 0 0 0 0 0 0 0 0 0 0
#Day_4 0 0.521 0.229 0 0 0 0 0 0 0 0 0 0
# Hour_14 Hour_15 Hour_16 Hour_17 Hour_18 Hour_19 Hour_20 Hour_21 Hour_22 #Hour_23 Hour_24
#Day_3 0 0 0 0.189 0.001 0 0 0 0 0 0
#Day_4 0 0 0 0.000 0.000 0 0 0 0 0 0