基于R中大型数据集中没有足够的重复数据删除行
Posted
技术标签:
【中文标题】基于R中大型数据集中没有足够的重复数据删除行【英文标题】:Removing Rows Based on Not Enough Repeated Data in a Large Data Set in R 【发布时间】:2015-07-17 02:24:47 【问题描述】:我希望对大量数据进行 4 天滚动平均值。问题是有些人没有 4 个案例,因此我收到一个错误,表明 k
有没有办法删除数据集中没有足够数据的任何个人?
以下是数据外观的示例:
Name variable.1
1 Kim 64.703950
2 Kim 926.339849
3 Kim 128.662977
4 Kim 290.888594
5 Kim 869.418523
6 Bob 594.973849
7 Bob 408.159544
8 Bob 609.140928
9 Joseph 496.779712
10 Joseph 444.028668
11 Joseph -213.375635
12 Joseph -76.728981
13 Joseph 265.642784
14 Hank -91.646728
15 Hank 170.209746
16 Hank 97.889889
17 Hank 12.069074
18 Hank 402.361731
19 Earl 721.941796
20 Earl 4.823148
21 Earl 696.299627
【问题讨论】:
【参考方案1】:您可以创建第二个 data.frame 聚合到用户级别,并为每个用户计算一个计数。然后由用户将该 data.frame 加入到原始数据中,然后将新的 data.frame 子集到 count >= 4
【讨论】:
【参考方案2】:试试:
library(zoo)
library(dplyr)
df %>%
group_by(Name) %>%
filter(n() >= 4) %>%
mutate(daymean = rollmean(variable.1, 4, align="right", na.pad=TRUE))
这只会使组数大于或等于 4,并计算 variable.1
的 4 天滚动平均值。
# Name variable.1 daymean
#1 Kim 64.70395 NA
#2 Kim 926.33985 NA
#3 Kim 128.66298 NA
#4 Kim 290.88859 352.6488
#5 Kim 869.41852 553.8275
#6 Joseph 496.77971 NA
#7 Joseph 444.02867 NA
#8 Joseph -213.37563 NA
#9 Joseph -76.72898 162.6759
#10 Joseph 265.64278 104.8917
#11 Hank -91.64673 NA
#12 Hank 170.20975 NA
#13 Hank 97.88989 NA
#14 Hank 12.06907 47.1305
#15 Hank 402.36173 170.6326
【讨论】:
【参考方案3】:这里有两个基本选项,一个是ave
,我们为组中的每一行生成一个向量,该向量具有该组的长度(ave
将回收其结果以填充一个组):
subset(DF, ave(seq(Name), Name, FUN=length) > 4)
另一个是table
,我们计算每个组中的项目并使用%in%
只保留属于具有足够项目的组的行。
subset(DF, Name %in% names(table(Name)[table(Name) > 4]))
两者都产生:
Name variable.1
1 Kim 64.70395
2 Kim 926.33985
3 Kim 128.66298
4 Kim 290.88859
5 Kim 869.41852
9 Joseph 496.77971
10 Joseph 444.02867
11 Joseph -213.37563
12 Joseph -76.72898
13 Joseph 265.64278
14 Hank -91.64673
15 Hank 170.20975
16 Hank 97.88989
17 Hank 12.06907
18 Hank 402.36173
【讨论】:
这是一个简单的解决方案。谢谢。【参考方案4】:如果您的数据框是df
,您可以删除所有使用dplyr
出现少于4 次的名称:
library(dplyr)
df %>%
group_by(Name) %>%
filter(n() >= 4)
【讨论】:
完美运行。谢谢! 您可能会发现 this introduction 到dplyr
有用的读物。
谢谢。 dplyr 似乎是一个非常有用的软件包。这将帮助我熟悉它。以上是关于基于R中大型数据集中没有足够的重复数据删除行的主要内容,如果未能解决你的问题,请参考以下文章
Excel - 如何删除数据集中单元格B为空的所有行[重复]
pandas删除数据行中的重复数据行基于dataframe所有列删除重复行基于特定数据列或者列的作何删除重复行删除重复行并保留重复行中的最后一行pandas删除所有重复行(不进行数据保留)