r - 如何选择列中具有相等值的行
问题描述
我有来自巴西的所有城市的完整数据框。我只想要一些预定义的城市。我有一个包含这些预定义城市的专栏。然后我想使用我的数据框中的所有列,但只选择与所有城市的列城市和与预定义城市的列重合的行。
data = read.csv(file="C:/Users/guilherme/Desktop/data.csv", header=TRUE, sep=";")
data
> AllCities Year1990 Year200 PredefinedCities
1 A 2 4 C
2 B 2 2 A
3 C 3 4 F
4 D 4 2
5 E 5 6
6 F 6 2
我想要以下
> data
AllCities Year1990 Year200 PredefinedCities
1 C 3 4 C
2 A 2 4 A
3 F 6 2 F
解决方案
使用 R 基础
选项1
> data[data$AllCities %in% data$PredefinedCities, -ncol(data)]
AllCities Year1990 Year200
1 A 2 4
3 C 3 4
6 F 6 2
选项 2
> subset(data, AllCities %in% PredefinedCities, select = -PredefinedCities)
AllCities Year1990 Year200
1 A 2 4
3 C 3 4
6 F 6 2
请注意,PredefinedCities
最终 data.frame 中的列不会保持与原始数据框中相同的顺序,所以我跳过了它
dplyr 方法:
> library(dplyr)
> data %>%
filter(AllCities %in% PredefinedCities) %>%
select(-PredefinedCities)
AllCities Year1990 Year200
1 A 2 4
2 C 3 4
3 F 6 2
数据
data <- structure(list(AllCities = c("A", "B", "C", "D", "E", "F"),
Year1990 = c(2L,2L, 3L, 4L, 5L, 6L),
Year200 = c(4L, 2L, 4L, 2L, 6L, 2L),
PredefinedCities = c("C","A", "F", NA, NA, NA)),
class = "data.frame",
row.names = c("1", "2", "3", "4", "5", "6"))
推荐阅读
- r - R数据表用户定义函数很慢
- sql - Microsoft SQL Server:获得最后购买日期的最高成本
- ios - Swift iOS - 在文本字段中输入时向下推 uiview
- java - java - 如何在没有Java递归方法的情况下减少两位数中的给定数字?
- java - “java.lang.IllegalArgumentException”试图检索文档数据
- multithreading - 为什么我最初在 tensorflow 训练中看到每秒步数激增?
- python - python中的数组/数据框操作
- r - 如何从数据框的一列中的所有行中删除特定字符
- android - Android 改造 - “请求实体太大”错误
- wagtail - 如何将 Wagtail 管理仪表板标题从“欢迎使用 bakerydemo Wagtail CMS”?