为ggplot-R排列数据帧格式
我想将我的数据从宽格式改为长格式,这样我就可以使用ggplot创建图形。我在正确整理数据方面遇到了一些问题。到目前为止,我以27个数据帧的列表开始我的过程(仅显示前10个数据帧): 我正在使用为ggplot-R排列数据帧格式,r,dataframe,ggplot2,data.table,R,Dataframe,Ggplot2,Data.table,我想将我的数据从宽格式改为长格式,这样我就可以使用ggplot创建图形。我在正确整理数据方面遇到了一些问题。到目前为止,我以27个数据帧的列表开始我的过程(仅显示前10个数据帧): 我正在使用data.table包中的rbindlist将所有内容合并到一个dataframe newdf问题在于列表的每个df中的变量名都不同。一旦这个问题解决了,剩下的就和你想象的一样了 dplyr/tidyr示例: df1<-data.frame(mean1=c(2,3),
data.table包中的rbindlist
将所有内容合并到一个dataframe
newdf问题在于列表的每个df中的变量名都不同。一旦这个问题解决了,剩下的就和你想象的一样了
dplyr/tidyr示例:
df1<-data.frame(mean1=c(2,3),
sd1 = c(1,2))
df2<-data.frame(mean2=c(4,5),
sd2 = c(3,4))
listdf<-list(df1,df2)
str(listdf)
重命名所有数据帧并将它们逐行绑定在一起
library(tidyverse)
listdf%>%map(function(x){x%>%rename_(mean = names(x)[1],
sd = names(x)[2])})%>%
bind_rows()
给予
我想你是在问如何对矩阵进行列绑定。据我所知,data.table
没有cbindlist
函数,因此您可以尝试:do.call(“cbind”,NDVI_stat)
,但这并不完全相同,如果每个数据帧中的行数不相等,就会失败。嗨,谢谢您的回复。是否不在dplyr
包中的bind_行
中?是的,但dplyr是tidyverse的一部分,因此您可以完全加载tidyverse,以便从dplyr访问bind_行并从tidyr映射感谢您的详细回答
List of 2
$ :'data.frame': 2 obs. of 2 variables:
..$ mean1: num [1:2] 2 3
..$ sd1 : num [1:2] 1 2
$ :'data.frame': 2 obs. of 2 variables:
..$ mean2: num [1:2] 4 5
..$ sd2 : num [1:2] 3 4
library(tidyverse)
listdf%>%map(function(x){x%>%rename_(mean = names(x)[1],
sd = names(x)[2])})%>%
bind_rows()
mean sd
2 1
3 2
4 3
5 4