从数据框列表创建数据框
Create dataframe from list of dataframe
我有一个列表 myList
,其中包含 16 data.frames
List of 16
$ dataframe1 :'data.frame': 20 obs. of 60 variables:
..$ Stat : Factor w/ 16 levels "a","b",..: 16 16 16 16 16 16 16 16 16 16 ...
..$ P10 : num [1:31] 1 3 2 2 4 8 0 4 2 5 ...
..$ R : num [1:31] NA NA NA NA NA NA NA NA NA NA ...
..$ S : num [1:31] 0 7 7 1 5 9 3 9 6 2 ...
$ dataframe2 :'data.frame': 20 obs. of 60 variables:
..$ Stat : Factor w/ 16 levels "c","d",..: 16 16 16 16 16 16 16 16 16 16 ...
..$ P10 : num [1:31] 2 1 2 2 5 6 7 2 2 5 ...
..$ R : num [1:31] NA 1 NA NA 2 NA 4 NA NA NA ...
..$ S : num [1:31] 10 2 4 1 5 8 8 8 1 2 ...
...
..
我需要每一列的 mean
并在 data.frame
中得到结果。
dataframe1 dataframe2 ....
Stat NA NA
P10 6 7
R NA 3
S 12 14
... ... ... ...
我有这个 lapply(myList$variable1, mean)
,其中 returns 我是该列表中一个 data.frame
的结果。
ldply(myList, data.frame)
不包含 mean
函数。
我将如何为整个列表执行此操作并将其合并为一个 data.frame
?
我们可以使用嵌套sapply
。第一个将遍历 list
,第二个将遍历 data.frame
的列,根据列是否为 numeric
的条件,我们得到 mean
或否则 return NA.
sapply(myList, function(x) sapply(x, function(y)
if(is.numeric(y)) mean(y, na.rm=TRUE) else NA))
我有一个列表 myList
,其中包含 16 data.frames
List of 16
$ dataframe1 :'data.frame': 20 obs. of 60 variables:
..$ Stat : Factor w/ 16 levels "a","b",..: 16 16 16 16 16 16 16 16 16 16 ...
..$ P10 : num [1:31] 1 3 2 2 4 8 0 4 2 5 ...
..$ R : num [1:31] NA NA NA NA NA NA NA NA NA NA ...
..$ S : num [1:31] 0 7 7 1 5 9 3 9 6 2 ...
$ dataframe2 :'data.frame': 20 obs. of 60 variables:
..$ Stat : Factor w/ 16 levels "c","d",..: 16 16 16 16 16 16 16 16 16 16 ...
..$ P10 : num [1:31] 2 1 2 2 5 6 7 2 2 5 ...
..$ R : num [1:31] NA 1 NA NA 2 NA 4 NA NA NA ...
..$ S : num [1:31] 10 2 4 1 5 8 8 8 1 2 ...
...
..
我需要每一列的 mean
并在 data.frame
中得到结果。
dataframe1 dataframe2 ....
Stat NA NA
P10 6 7
R NA 3
S 12 14
... ... ... ...
我有这个 lapply(myList$variable1, mean)
,其中 returns 我是该列表中一个 data.frame
的结果。
ldply(myList, data.frame)
不包含 mean
函数。
我将如何为整个列表执行此操作并将其合并为一个 data.frame
?
我们可以使用嵌套sapply
。第一个将遍历 list
,第二个将遍历 data.frame
的列,根据列是否为 numeric
的条件,我们得到 mean
或否则 return NA.
sapply(myList, function(x) sapply(x, function(y)
if(is.numeric(y)) mean(y, na.rm=TRUE) else NA))