R:以预定的出现频率和因子的自动更新级别删除变量(因子)的行
问题描述:
我有一组包含多个变量的数据。其中一个变量 - 阶乘包含组的名称 - A,B,C等。其余变量是数字。R:以预定的出现频率和因子的自动更新级别删除变量(因子)的行
> data1
Group Value
1 A 23
2 A 25
3 B 1
4 C 15
5 C 11
6 C 14
7 B 3
8 B 4
9 B 2
10 C 19
对于进一步的统计计算欲从所述数据组包含该基团中的次数据帧的n个发现了一个特定的基团(例如,X),其条件行排除(例如,少于2次)。
我以前见过的材料主要关注删除具有特定值的行,并且与数据框中组(因子)的出现频率无关。也许我错了?抱歉!
要在“手动”模式中删除特定的行,我使用以下代码:
data1 <- as.data.frame(
lapply(subset(data1, !Group=="A"),
function(x) if(is.factor(x)) factor(x) else x
)
)
我想这个过程自动化,并且排除各级因子(组)具有预定的发生:
> data1
Group Value
1 B 1
2 C 15
3 C 11
4 C 14
5 B 3
6 B 4
7 B 2
8 C 19
加成
先生Akrun“带来的主意,用下面的代码:
tbl <- table(data1$Group)
data1 <- subset(data1, Group %in% names(tbl)[tbl>2])
这就是你需要的!我为此感谢他! 但是,rezltate因子水平保持不变。要纠正这种情况,我不得不使用该记录:
data1$Group = factor(data1$Group)
肯定有现成的解决方案考虑到这种情况?
答
我们可以使用data.table
。将'data.frame'转换为'data.table'(setDT(data1)
),按'Group'分组,if
行数大于2(.N >2
),我们得到Data.table的子集(.SD
)。
library(data.table)
setDT(data1)[, if(.N >2) .SD, by = Group]
或者与dplyr
,由 '集团',filter
有NROWS(n()
)组分组后大于2
library(dplyr)
data1 %>%
group_by(Group) %>%
filter(n() > 2)
或者使用base R
,我们得到'群'的频率与table
和%in%
中的subset
保持一致。
tbl <- table(data1$Group)
subset(data1, Group %in% names(tbl)[tbl>2])
啊,只是打败了我。不错的一个 –
优秀的东西。其作品!谢谢! –