使用R,如何使用不同结果列的几个结果表并将它们按行组合,以便捕获所有结果,如果一组结果没有此列,则使用NA或空白.基本上我需要获取我拥有的数据

并把它变成我想要的数据

请注意,我不关心品牌型号和年份,它们可以叠加在一起.
对于格式不佳的帖子道歉,我仍然在这里找到我的脚.
我们可以使用rbindlist从data.table保持它在后list
library(data.table)
rbindlist(list(df1, df2, df3), use.names = TRUE, fill=TRUE)
Run Code Online (Sandbox Code Playgroud)
或使用bind_rows从dplyr
library(dplyr)
bind_rows(df1, df2, df3)
Run Code Online (Sandbox Code Playgroud)
如果数据在图像中显示的单个文件中,请使用readLines,然后将split其读取list并使用rbindlist
lines1 <- trimws(readLines("temp1.csv"))
i1 <- cumsum(grepl("^Brand", lines1))
i2 <- lines1!=''
lst <- lapply(split(lines1[i2], i1[i2]),
function(x) read.csv(text=x, sep=""))
rbindlist(lst, use.names=TRUE, fill = TRUE)
Run Code Online (Sandbox Code Playgroud)
要么
bind_rows(lst)
Run Code Online (Sandbox Code Playgroud)
df1 <- data.frame(Brand = 1, Model ="A", Year = 2010:2014,
Dogs = c(0.71, 0.76, 0.40, 0.39, 0.67),
Cats = c(0.64,0.06,0.18, 0.20, 0.23),
Rabbits = c(0.56, 0.96, 0.90, 0.38, 0.73),
stringsAsFactors=FALSE)
df2 <- data.frame(Brand = 1, Model ="B", Year = c(2010, 2011, 2013, 2014),
Dogs = c(0.12, 0.43, 0.79, 0.29),
Ducks = c(0.67, 0.48, 0.80, 0.70),
stringsAsFactors=FALSE)
df3 <- data.frame(Brand = 1, Model ="C", Year = 2013:2014,
Dogs = c(0.76, 0.98),
Cats = c(0.90, 0.84),
Lions = c(0.12, 0.22),
Wolves = c(0.75, 0.61),
stringsAsFactors=FALSE)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1313 次 |
| 最近记录: |