R 行长不均匀的长格式计算

R 行长不均匀的长格式计算,r,R,小背景,我对R还是新手,只是最近才学会用长格式格式化数据。但即使是现在,我也不确定我一直在做正确的事情 我已将数据导入数据帧列表 # after import, data looks something like this a <- data.frame(x = 1:50, y = rnorm(50), z = "A") b <- data.frame(x = 1:40, y = rnorm(40), z = "B") c <- data.frame(x = 1:2

小背景,我对R还是新手,只是最近才学会用长格式格式化数据。但即使是现在,我也不确定我一直在做正确的事情

我已将数据导入数据帧列表

# after import, data looks something like this
a   <- data.frame(x = 1:50, y = rnorm(50), z = "A")
b   <- data.frame(x = 1:40, y = rnorm(40), z = "B")
c   <- data.frame(x = 1:20, y = rnorm(20), z = "C")
set <- list(a,b,c)
#导入后,数据如下所示

a这花了太长时间才找到答案,所以我将在这里为我和其他人发布它

综上所述,长格式对于使用ggplot绘制图形非常有用,而宽格式对于将函数应用到数据帧非常有用。不幸的是,我导入的数据具有不均匀的行长度,这使得转换到数据帧很麻烦

为了解决这个问题,我基本上需要一个cbind.fill,而不是使用rbind.fill导入,它并不存在。直到我发现它贴在这里:


我建议查看此类任务的
dplyr
data.table
包。有一个很好的介绍任何一个可在网上。使用ggplot()打印的最佳格式可能是从列表中生成一个数据帧。类似于
dplyr
中的
bind\u行(a、b、c)
就可以实现这个功能。然而,要给出一个具体的答案,这个问题有点模糊。您可以在
dplyr
中使用
groupby
,是的,如果您想快速了解如何做到这一点,请尝试以下方法:感谢yoland,
bind\u rows
方法似乎给出了与上述相同的结果(
t
)。为了重新措辞而不产生混乱,我正在寻找一种将长格式转换为宽格式的方法,使用具有不同NROW的数据帧。
require(ggplot2)    
t <- as.data.frame(do.call(rbind.fill, set))

ggplot(t, aes(x = x, y = y, color = z)) + geom_line()