如何删除数据框中不相似的条目
How to remove entries in a data drame that are dissimilar
我有很多人的统计数据,我把它们编成了 data.frame teamroster
。唯一的问题是,有些人有重名,不属于名单(因为他们有不同的团队名称。请看下面 teamroster
中的案例 Matt Duffy
)。我想系统地删除名册上所有不具有相同团队名称的名称和条目。
这是我的原始 data.frame
:
teamroster
Name Team G PA
1 Denard Span Giants 30 135
2 Joe Panik Giants 25 107
3 Matt Duffy Giants 31 127
4 Matt Duffy Astros 3 3
5 Buster Posey Giants 27 108
解决方案代码将识别 Matt Duffy
在不同的团队中,如 Team
列所示,并删除他,因为他在 Team = Astros
中。这就是我希望生成的数据框的样子:
finishedteamroster
Name Team G PA
1 Denard Span Giants 30 135
2 Joe Panik Giants 25 107
3 Matt Duffy Giants 31 127
4 Buster Posey Giants 27 108
您可以将团队名称制成表格,然后取表格中的最大值。请注意,我使用 which.max()
是为了保留 table 名称的副作用。
idx <- with(df, Team == names(which.max(table(Team))))
df[idx, ]
# Name Team G PA
# 1 Denard Span Giants 30 135
# 2 Joe Panik Giants 25 107
# 3 Matt Duffy Giants 31 127
# 5 Buster Posey Giants 27 108
数据:
df <- structure(list(Name = structure(c(2L, 3L, 4L, 4L, 1L), .Label = c("Buster Posey",
"Denard Span", "Joe Panik", "Matt Duffy"), class = "factor"),
Team = structure(c(2L, 2L, 2L, 1L, 2L), .Label = c("Astros",
"Giants"), class = "factor"), G = c(30L, 25L, 31L, 3L, 27L
), PA = c(135L, 107L, 127L, 3L, 108L)), .Names = c("Name",
"Team", "G", "PA"), class = "data.frame", row.names = c("1",
"2", "3", "4", "5"))
我有很多人的统计数据,我把它们编成了 data.frame teamroster
。唯一的问题是,有些人有重名,不属于名单(因为他们有不同的团队名称。请看下面 teamroster
中的案例 Matt Duffy
)。我想系统地删除名册上所有不具有相同团队名称的名称和条目。
这是我的原始 data.frame
:
teamroster
Name Team G PA
1 Denard Span Giants 30 135
2 Joe Panik Giants 25 107
3 Matt Duffy Giants 31 127
4 Matt Duffy Astros 3 3
5 Buster Posey Giants 27 108
解决方案代码将识别 Matt Duffy
在不同的团队中,如 Team
列所示,并删除他,因为他在 Team = Astros
中。这就是我希望生成的数据框的样子:
finishedteamroster
Name Team G PA
1 Denard Span Giants 30 135
2 Joe Panik Giants 25 107
3 Matt Duffy Giants 31 127
4 Buster Posey Giants 27 108
您可以将团队名称制成表格,然后取表格中的最大值。请注意,我使用 which.max()
是为了保留 table 名称的副作用。
idx <- with(df, Team == names(which.max(table(Team))))
df[idx, ]
# Name Team G PA
# 1 Denard Span Giants 30 135
# 2 Joe Panik Giants 25 107
# 3 Matt Duffy Giants 31 127
# 5 Buster Posey Giants 27 108
数据:
df <- structure(list(Name = structure(c(2L, 3L, 4L, 4L, 1L), .Label = c("Buster Posey",
"Denard Span", "Joe Panik", "Matt Duffy"), class = "factor"),
Team = structure(c(2L, 2L, 2L, 1L, 2L), .Label = c("Astros",
"Giants"), class = "factor"), G = c(30L, 25L, 31L, 3L, 27L
), PA = c(135L, 107L, 127L, 3L, 108L)), .Names = c("Name",
"Team", "G", "PA"), class = "data.frame", row.names = c("1",
"2", "3", "4", "5"))