r - 如何根据行值选择列?
问题描述
考虑以下小标题:
## # A tibble: 16 x 4
## name genus order sleep_total
## <chr> <chr> <chr> <dbl>
## 1 Cheetah Acinonyx Carnivora 12.1
## 2 Northern fur seal Callorhinus Carnivora 8.70
## 3 Vesper mouse Calomys Rodentia 7.00
## 4 Dog Canis Carnivora 10.1
## 5 Roe deer Capreolus Artiodactyla 3.00
## 6 Goat Capri Artiodactyla 5.30
## 7 Guinea pig Cavis Rodentia 9.40
## 8 Domestic cat Felis Carnivora 12.5
## 9 Gray seal Haliochoerus Carnivora 6.20
## 10 Tiger Panthera Carnivora 15.8
## 11 Jaguar Panthera Carnivora 10.4
## 12 Lion Panthera Carnivora 13.5
## 13 Caspian seal Phoca Carnivora 3.50
## 14 Genet Genetta Carnivora 6.30
## 15 Arctic fox Vulpes Carnivora 12.5
## 16 Red fox Vulpes Carnivora 9.80
我只想选择至少包含一个名为“Carnivora”的行值的列。
在这种情况下,预期的输出将是:
## order
## <chr>
## Carnivora
## Carnivora
## Rodentia
## Carnivora
## Artiodactyla
## Artiodactyla
## Rodentia
## Carnivora
## Carnivora
## Carnivora
## Carnivora
## Carnivora
## Carnivora
## Carnivora
## Carnivora
## Carnivora
其他人提供了如何获取包含此内容的行。但是,这包括不包含此值的列。
sleep %>%
select(name:order, sleep_total, -vore) %>%
filter_all(any_vars(str_detect(., pattern = "Ca")))
解决方案
我们可以用select_if
library(dplyr)
ggplot2::msleep %>% select_if(~any(. == "Carnivora", na.rm = TRUE))
# order
#1 Carnivora
#2 Carnivora
#3 Rodentia
#4 Carnivora
#5 Artiodactyla
#6 Artiodactyla
#7 Rodentia
#8 Carnivora
#9 Carnivora
#10 Carnivora
#11 Carnivora
#12 Carnivora
#13 Carnivora
#14 Carnivora
#15 Carnivora
#16 Carnivora
或者在基础 R 中使用colSums
msleep[colSums(msleep == "Carnivora", na.rm = TRUE) > 0]
或者apply
msleep[apply(msleep == "Carnivora", 2, any, na.rm = TRUE)]
推荐阅读
- events - Firebase 分析。无法向事件添加自定义参数
- php - Sabre XML 编写器的输出是纯字符串
- json - 如何合并这两个数组以创建这种 JSON 格式,React
- vba - Type mismatch word
- python - 如何在base64字符串和numpy数组之间进行编码和解码?
- maven - 无法解析项目 com.neo:Neo4j:jar:0.0.1-SNAPSHOT 的依赖关系:未能找到 org.neo4j:neo4j-spatial:jar:0.25.5-neo4j-3.4.0
- php - 超链接 php 返回 db 值
- javascript - 使用 mCustomScroll 将修复标题 xy 滚动添加到表
- visual-studio - 将键盘快捷键映射到 TFS 获取最新版本(递归)
- spring - 我如何为 Spring Boot 应用程序做谷歌站点地图