首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何同时对值和名称进行子集

如何同时对值和名称进行子集
EN

Stack Overflow用户
提问于 2019-07-11 07:07:51
回答 2查看 46关注 0票数 0

有没有一种方便的方法将这两个步骤合并为一个步骤?

代码语言:javascript
运行
复制
df = data.frame(aa = 'A', ab = '', n = 'C')
#  aa  ab  n
#   A      C

temp = df[ grep('a', names(df)) ]          
#  aa  ab  
#   A       

ans = temp[ temp != '' ]
# [1] "A"

提前感谢您的任何建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-11 07:39:56

这里有一种假设你的数据帧只有一行的方法-

代码语言:javascript
运行
复制
df[grepl("a", names(df)) & df != '']

[1] "A"

感谢@thelatemail,这是一个适用于任意数量行的通用解决方案-

代码语言:javascript
运行
复制
df <- data.frame(aa = c('A','B'), ab = c('','T'), n = c('C', 'C'))

df[grepl("a", names(df)[col(df)]) & df != '']

[1] "A" "B" "T"
票数 2
EN

Stack Overflow用户

发布于 2019-07-11 07:22:14

tidyverse方式

代码语言:javascript
运行
复制
library(tidyr)
library(dplyr)
df = data.frame(aa = 'A', ab = '', n = 'C')
df.long <-gather(df, col) #chaging to long format and key is col
df.long %>%
filter(col %in% grep("a",col, value = T) & value != '')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56979685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档