r - 使用 lapply 从数据框列表创建新数据框

标签 r list dataframe lapply

我有一个数据框列表。每个列表包含两列“名称”和“代码”

一个

Name Code
AAA  123
BBB  456
CCC  789

B

   Name Code
   AAA  123
   AAB  124
   AAC  125

C

Name Code
BBB  456
BBA  457
BBC  458
  1. 我想创建一个新的数据框“NEW”,其中包含所有唯一的名称和代码,以便我得到

    名称代码 AAA 123 阿布124 AAAC 125 BBB 456 工商管理学士 457 英国广播公司458 CCC 789

  2. 在获得“NEW”后,我想将数据框列表与“NEW”进行比较,并判断每个名称是否出现在一个列表中。 我想将新列(包含列表中数据框的名称)添加到"new"数据框中,并输入"is"或“否”(如果存在)。

所以得到这个

Name Code  A     B     C
AAA  123   YES   YES   NO
AAB  124   NO    YES   NO
AAC  125   NO    YES   NO
BBB  456   YES   NO    YES
BBA  457   No    NO    YES
BBC  458   NO    NO    YES
CCC  789   YES   NO    NO

我想使用lapply,但我不知道如何做所有事情。

你能帮我吗

最佳答案

将行与 ID 绑定(bind),然后使用 data.table 从长到宽重新调整形状:

# example data
myList <- list(A = data.frame(x = 1:3),
               B = data.frame(x = 2:4),
               C = data.frame(x = 4:6))

library(data.table)

dcast(rbindlist(myList, idcol = "ID"), x ~ ID)
#    x  A  B  C
# 1: 1  1 NA NA
# 2: 2  2  2 NA
# 3: 3  3  3 NA
# 4: 4 NA  4  4
# 5: 5 NA NA  5
# 6: 6 NA NA  6

关于r - 使用 lapply 从数据框列表创建新数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55571062/

相关文章:

r - 给定一个带有 A 列的 R 数据框,如何创建两个包含 A 的所有有序组合的新列

python - 类型错误 : 'list' object is not callable: why?

arrays - 比较两个对象列表A和B的列表,并存储在 Dart 中的另一个列表C中

python - 使用 for 循环将数据添加到 pandas 数据帧,所有数据具有相同的键数据帧已经包含一些数据

python - 如何在数据框中选择 n-1 列

r - 赋值运算符的重载与长度函数的组合如何工作?

reshape lapply 创建的列表

r - 仅将as.numeric应用于可强制转换为数字(在R中)的列表元素

java - List 和 List<?> 的区别

python - 将具有相同 id 的行分组,pandas/python