gpt4 book ai didi

r - 分析列表中的数据框并绑定(bind)结果

转载 作者:行者123 更新时间:2023-12-01 12:08:11 24 4
gpt4 key购买 nike

我拥有的数据是数据框列表。我想遍历每个数据框以查找:

  1. 如果有列名重复。如果是,那我想在父数据框中使用 rbind() 合并它们称为 output 并删除此类数据帧的所有其他列。
  2. 我还想检查是否有任何数据框不重复列。如果是,则删除除第一列以外的所有列。然后cbind()output 这样,如果行多于或少于由 (1) 创建,然后应添加 zero

我试过使用 lappy(),但我的逻辑无法一次性完成。任何建议都会有所帮助。

output <- lapply(data, function(x) {

})

包含数据框的输入数据列表

list(A = structure(list(`A-DIODE` = c(1.2, 0.4), `A-DIODE` = c(1.3, 
0.6)), row.names = c(NA, -2L), class = "data.frame"), B = structure(list(
`B-DIODE` = c(1.4, 0.8), `B-ACC1` = c(1.5, 1), `B-ACC2` = c(1.6,
1.2), `B-ANA0` = c(1.7, 1.4), `B-ANA1` = c(1.8, 1.6), `B-BRICKID` = c(1.9,
1.8), `B-CC0` = c(2L, 2L), `B-CC1` = c(2.1, 2.2), `B-DIGDN` = c(2.2,
2.4), `B-DIGDP` = c(2.3, 2.6), `B-DN1` = c(2.4, 2.8), `B-DN2` = c(2.5,
3), `B-DP1` = c(2.6, 3.2), `B-DP2` = c(2.7, 3.4), `B-SCL` = c(2.8,
3.6), `B-SDA` = c(2.9, 3.8), `B-USB0DN` = 3:4, `B-USB0DP` = c(3.1,
4.2), `B-USB1DN` = c(3.2, 4.4), `B-USB1DP` = c(3.3, 4.6),
`B-ACC1` = c(3.4, 4.8), `B-ACC2` = c(3.5, 5), `B-ANA0` = c(3.6,
5.2), `B-ANA1` = c(3.7, 5.4), `B-BRICKID` = c(3.8, 5.6),
`B-CC0` = c(3.9, 5.8), `B-CC1` = c(4L, 6L), `B-DIGDN` = c(4.1,
6.2), `B-DIGDP` = c(4.2, 6.4), `B-DN1` = c(4.3, 6.6), `B-DN2` = c(4.4,
6.8), `B-DP1` = c(4.5, 7), `B-DP2` = c(4.6, 7.2), `B-SCL` = c(4.7,
7.4), `B-SDA` = c(4.8, 7.6), `B-USB0DN` = c(4.9, 7.8), `B-USB0DP` = c(5L,
8L), `B-USB1DN` = c(5.1, 8.2), `B-USB1DP` = c(5.2, 8.4),
`B-NA` = c(5.3, 8.6), `B-ACC2PWRLKG_0v4` = c(5.4, 8.8), `B-ACC2PWRLKG_0v4` = c(5.5,
9), `B-P_IN_Leak` = c(5.6, 9.2)), row.names = c(NA, -2L), class = "data.frame"))

期望的输出

> A
A-DIODE
1.2
0.4
1.3
0.6

> B
B-DIODE
1.4
0.8

> Output
A-DIODE B-DIODE
1.2 1.4
0.4 0.8
1.3 0
0.6 0

最佳答案

遍历 list,使用 if/else 创建一个条件来检查 uniquelength列名称并在只有一个唯一列时返回 unlisted 单个 data.frame,否则返回第一列。最后,使用 cbind.fill(来自 rowr)将 data.frame 列的 list 绑定(bind)在一起,指定填充为0

lst2 <- lapply(lst1, function(x) if(length(unique(names(x))) ==1)
setNames(data.frame(unlist(x)), names(x)[1]) else x[1])
do.call(rowr::cbind.fill, c(lst2, list(fill = 0)))
# A.DIODE B.DIODE
#1 1.2 1.4
#2 0.4 0.8
#3 1.3 0.0
#4 0.6 0.0

关于r - 分析列表中的数据框并绑定(bind)结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54562588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com