r - 如何按列值选择数据框列表中的行
问题描述
我有一个包含四个数据框的列表(lfs01),每个数据框都有不同数量的列和行。
我想按一列中的值过滤所有数据框中的行(如果 == 1)。该变量在前两个数据帧中称为“a”,在后两个数据帧中称为“A”。
我查看了以前的类似问题,但不幸的是我没有找到解决方案。
以下是我尝试过的事情:
data<-lapply(lfs01, function(x) filter(x ,'a'==1))
data<-lapply(lfs01, function(x) filter(x ,'a'==1|'A' ==1))
```
# Result: a - list of 4 data frames with 0 rows.
```
data<-as.list(1:4)
for(i in 1:length(lfs01)){
data[[i]]<-lfs01[[i]]%>%
filter('a'== 1)
}
```
# and
```
data<-map(lfs01, ~filter(.x, 'a'%in%1 ))
```
# Results as above - list of 4 data frames with 0 rows.
Many thanks in advance!
解决方案
一种可能的方法是重命名列,以便所有数据框都具有相同的名称,并且很容易对它们进行子集化。如果您事先知道该列的位置,另一种方法可能是根据位置对数据帧进行子集化。
如果以上都不可能,那么我们可以检查是否存在特定名称并subset
相应地使用命令。
lapply(lfs01,function(x) if('a' == names(x)) subset(x,a == 1) else subset(x,A == 1))
推荐阅读
- swift - 对于 lops 和 func 不打印代码调用中参数“in”的缺少参数
- sql-server - 在 SQL Server 中查找和替换系统文件夹路径到 Web 路径
- tslint - 如何禁用规则:TSLint 中的单行
- python - 从 Docker 容器中运行的 Flask 应用程序下载文件
- azure - 数据工厂 SAP BW
- arrays - 数组组中 2 个元素的总和按多个值
- python - Pandas:将数字过滤为数据框中的字符串值
- c# - 如何不使用 UserControl.dispose()
- mysql - 使用通配符时带有插入的Mysql重复表会引发错误
- python - 使用来自其他列的索引对 DataFrame 进行切片