相关疑难解决方法(0)

将数据帧列表转换为一个数据帧

我有一些代码,在一个地方最终得到一个数据帧列表,我真的想转换为一个大数据帧.

我从之前的一个问题中得到了一些指示,这个问题试图做类似但更复杂的事情.

这是我开始的一个例子(为了说明,这是非常简化的):

listOfDataFrames <- vector(mode = "list", length = 100)

for (i in 1:100) {
    listOfDataFrames[[i]] <- data.frame(a=sample(letters, 500, rep=T),
                             b=rnorm(500), c=rnorm(500))
}
Run Code Online (Sandbox Code Playgroud)

我目前正在使用这个:

  df <- do.call("rbind", listOfDataFrames)
Run Code Online (Sandbox Code Playgroud)

r list dataframe

297
推荐指数
9
解决办法
17万
查看次数

熊猫合并101

  • 如何用pandas 执行(LEFT| RIGHT| FULL)(INNER| OUTER)连接?
  • 合并后如何为缺失的行添加NaN?
  • 合并后如何摆脱NaN?
  • 我可以合并索引吗?
  • 如何合并多个DataFrame?
  • mergejoinconcatupdate?谁?什么?为什么?!

... 和更多.我已经看到了这些反复出现的问题,询问了pandas合并功能的各个方面.今天关于合并及其各种用例的大部分信息在几十个措辞严厉,不可搜索的帖子中都是分散的.这里的目的是为后代整理一些更重要的观点.

这个QnA应该是关于常见熊猫习语的一系列有用的用户指南的下一部分(参见关于转动的这篇文章,以及关于连接的这篇文章,我将在稍后介绍).

请注意,这篇文章并不是文档的替代品,所以请阅读它!一些例子来自那里.

python merge join pandas

271
推荐指数
6
解决办法
4万
查看次数

如何制作数据框列表?

如何制作数据框列表以及如何从列表中访问每个数据框?

例如,如何将这些数据框放在列表中?

d1 <- data.frame(y1 = c(1, 2, 3),
                 y2 = c(4, 5, 6))
d2 <- data.frame(y1 = c(3, 2, 1),
                 y2 = c(6, 5, 4))
Run Code Online (Sandbox Code Playgroud)

r list dataframe r-faq

171
推荐指数
7
解决办法
19万
查看次数

合并了很多data.frames

可能重复:同时
合并列表中的多个数据帧

例如data.frames:

 df1 = data.frame(id=c('1','73','2','10','43'),v1=c(1,2,3,4,5)) <br>
 df2 = data.frame(id=c('7','23','57','2','62','96'),v2=c(1,2,3,4,5,6)) <br>
 df3 = data.frame(id=c('23','62'),v3=c(1,2)) <br>
Run Code Online (Sandbox Code Playgroud)

注意:id每个data.frame都是唯一的.我希望得到的矩阵看起来像

1      1 NA NA 
2      3  4 NA 
7      NA 1 NA 
10     4 NA NA 
23     NA 2  1 
43     5 NA NA 
57     NA 3 NA 
62     NA 5  2 
73     2 NA NA 
96     NA 6 NA
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我只显示3个数据集,我实际上至少有22个数据集,所以最后我想要一个nx(22 + 1)矩阵,其中n是所有22个数据集的id数.

给定2个数据集,我需要ids在第一列中获取它们,第二列和第三列用值填充,如果没有值,则输入NA.

merge r dataframe

67
推荐指数
1
解决办法
12万
查看次数

如何在R中使用dplyr执行多个左连接

如何使用R连接多个数据帧dplyr

new <- left_join(x,y, by = "Flag")
Run Code Online (Sandbox Code Playgroud)

这是我用来离开连接x和y的代码,代码不适用于多个连接

new <- left_join(x,y,z by = "Flag")
Run Code Online (Sandbox Code Playgroud)

r dplyr

47
推荐指数
1
解决办法
5万
查看次数

合并多个data.tables

我知道一个可以合并(加入)两大data.table争夺的merge功能或[.data.table功能.但是,如果我说10,data.tables并且想要do.call将它们全部合并在一起,是否有一个功能可以做到这一点?目前我do.call(cbind, ...)只使用非常特殊的情况.

merge join r data.table

37
推荐指数
3
解决办法
2万
查看次数

通过rownames合并R中的2个以上数据帧

我从4 df收集数据,并希望通过rownames合并它们.我正在寻找一种有效的方法来做到这一点.这是我拥有的数据的简化版本.

df1           <- data.frame(N= sample(seq(9, 27, 0.5), 40, replace= T),
                            P= sample(seq(0.3, 4, 0.1), 40, replace= T),
                            C= sample(seq(400, 500, 1), 40, replace= T))
df2           <- data.frame(origin= sample(c("A", "B", "C", "D", "E"), 40,
                                           replace= T),
                            foo1= sample(c(T, F), 40, replace= T),
                            X= sample(seq(145600, 148300, 100), 40, replace= T),
                            Y= sample(seq(349800, 398600, 100), 40, replace= T))
df3           <- matrix(sample(seq(0, 1, 0.01), 40), 40, 100)
df4           <- matrix(sample(seq(0, 1, 0.01), 40), 40, 100)
rownames(df1) <- paste("P", sprintf("%02d", c(1:40)), sep= "")
rownames(df2) …
Run Code Online (Sandbox Code Playgroud)

reduce merge r dataframe rowname

33
推荐指数
4
解决办法
7万
查看次数

如何合并R中列表的所有元素?

我有一个包含数据框的列表作为其在R中的元素.

例:

df1 <- data.frame("names"=c("John","Sam","Dave"),"age"=c(21,22,25))
df2 <- data.frame("names"=c("John","Sam"),"score"=c(22,25))
df3 <- data.frame("names"=c("John","Sam","Dave"),"country"=c("US","SA","NZ"))
mylist <- list(df1,df2,df3)
Run Code Online (Sandbox Code Playgroud)

是否可以在不使用循环的情况下将mylist的所有元素合并在一起?

我希望这个例子的输出是:

  names age score country
1  John  21    22      US
2   Sam  22    25      SA
Run Code Online (Sandbox Code Playgroud)

此示例中的列表只有三个元素; 但是,我正在寻找一种可以处理任意数量元素的解决方案.

merge r list

16
推荐指数
3
解决办法
3万
查看次数

将合并中的后缀扩展到所有非列

suffixesmerge仅公共列名的作品.无论如何还要将其扩展到其余列,而无需在合并之前手动更新列?

那是 -

df1 <- data.table(
a = c(1,2,3,4,5,6),
b = c('a','b','f','e','r','h'),
d = c('q','l','o','n','q','z')
)

df2 <- data.table(
a = c(1,2,3,4,5,6),
d = c('q','l','o','n','q','z')
)

colnames(merge(df1,df2, by = 'a', suffixes = c("1","2")))
#[1] "a"  "b"  "d1" "d2" what it does
#[1] "a"  "b1" "d1" "d2" what I'd like it to do
Run Code Online (Sandbox Code Playgroud)

我正在处理的这种方式类似于@ mrip的答案.

df1 <- data.table(
a = c(1,2,3,4,5,6),
b = c('a','b','f','e','r','h'),
r = c('a','b','f','e','r','h'),
d = c('q','l','o','n','q','z')
)

df2 <- data.table(
a = c(1,2,3,4,5,6),
c …
Run Code Online (Sandbox Code Playgroud)

merge r data.table

10
推荐指数
2
解决办法
4881
查看次数

dplyr:如何以编程方式将full_join数据帧包含在列表列表中?

上下文和数据结构

我将与您分享我的庞大数据集的简化版本.这个简化版本完全尊重我原始数据集的结构,但包含的列表元素,数据框,变量和观察结果比原始数据集少.

根据对这个问题的最热烈回答:如何制作一个很好的R可重复的例子?,我使用输出共享我的数据集,通过dput(query1)在R控制台中复制/粘贴以下代码块,为您提供可立即在R中使用的内容:

       structure(list(plu = structure(list(year = structure(list(id = 1:3,
    station = 100:102, pluMean = c(0.509068994778059, 1.92866478959912,
    1.09517453602154), pluMax = c(0.0146962179957886, 0.802984389130343,
    2.48170762478472)), .Names = c("id", "station", "pluMean",
"pluMax"), row.names = c(NA, -3L), class = "data.frame"), month = structure(list(
    id = 1:3, station = 100:102, pluMean = c(0.66493845927034,
    -1.3559338786041, 0.195600637750077), pluMax = c(0.503424623872161,
    0.234402501255681, -0.440264545434053)), .Names = c("id",
"station", "pluMean", "pluMax"), row.names = c(NA, -3L), class = "data.frame"),
    week = structure(list(id = 1:3, station = 100:102, …
Run Code Online (Sandbox Code Playgroud)

r data-manipulation dplyr tidyverse

8
推荐指数
1
解决办法
768
查看次数