【发布时间】:2019-05-13 20:12:31
【问题描述】:
- 使用 R *
我有一个包含 16 个数据框的列表,其中每个数据框对应不同的年份。为了保持秩序,我在创建这些 df 时,根据每个 df 的年份给每个 columname 添加了后缀(例如 2002 年 df 的 area 字段称为“area_2”,2003 年称为“area_3”。
在 DF 的列中,有一个字段具有两个可能的值(0 或 1,作为 True 或 False 的表示)。
我想根据这些子集的可能字段创建子集列表,例如该字段为 1 或 0 的每个 df 的行。
如果所有字段都以相同的方式命名,我可以使用以下行:
subset <- lapply(df.list, function(x) dplyr::filter(x, fieldname == "1"))
但是,字段名称在每个列表成员中的名称不同,分别为“fieldname_2”、“fieldname_3”——一直到 18(跳过 8)。
那么,问题是是否有一种直接的方法来执行这个子集,在列表中,设置函数来查找具有模式和变化后缀的字段名。
练习过滤的虚拟示例:
valuesx <- c(1,4,3,1,2,5,6,4)
valuesy <- c(4,3,7,1,8,5,2,1)
column_2 <- c(1,1,1,1,0,0,0,0)
column_3 <- c(1,0,1,1,0,0,1,0)
df1<- data.frame(value = valuesx, column_2 = column_2)
df2<- data.frame(value = valuesy, column_3 = column_3)
list_df <- list(df1, df2)
期望的结果:一个新列表,其中包含每个 DF 的行,其中 "column*"==1
【问题讨论】: