如何从r中的输出中提取特定的数据帧?
我的输出如下所示 在我的输出中有一些类似的集群。如您所见,共有两列(第1天和第2天)。我想为每天提取(或导出)以如何从r中的输出中提取特定的数据帧?,r,extract,R,Extract,我的输出如下所示 在我的输出中有一些类似的集群。如您所见,共有两列(第1天和第2天)。我想为每天提取(或导出)以Hour\u 1开头的数据帧 所以对于集群1,我想有两个数据帧,一个从0.00,0,0…开始,一直持续到Hour\u 24,另一个从1.07,0,0…开始,一直持续到Hour\u 24 这是我的数据结构 v1<-structure(list(`Cluster 1` = structure(list(Day = c(1, 2), Season = c(1, 1), Y
Hour\u 1
开头的数据帧
所以对于集群1
,我想有两个数据帧,一个从0.00,0,0…
开始,一直持续到Hour\u 24
,另一个从1.07,0,0…
开始,一直持续到Hour\u 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"))
v1您可以将以“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))
您可以将以“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
带有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
我希望每天都单独使用,但我需要使用R3.3.0。此版本不存在asplit函数。我还可以使用什么替代方法?@HüsamettinTayşI您可以使用split
<代码>lappy(v1,函数(x)拆分(x[grep('Hour',name(x))],1:nrow(x))
我想每天单独使用,但我需要使用R3.3.0。此版本不存在asplit函数。我还可以使用什么替代方法?@HüsamettinTayşI您可以使用split
<代码>lappy(v1,函数(x)拆分(x[grep('Hour',name(x))],1:nrow(x)))