获取与R中data.table中的条件匹配的最后一行
我有如下数据:获取与R中data.table中的条件匹配的最后一行,r,data.table,R,Data.table,我有如下数据: d <- data.table(SEQ = c(1, 1, 2, 2, 1, 2, 2, 3, 1, 1, 2, 3, 3, 4, 5, 5), TYPE = c("A", "A", "B", "B", "C", "C", "C", "C",
d <- data.table(SEQ = c(1, 1, 2, 2,
1, 2, 2, 3,
1, 1, 2, 3,
3, 4, 5, 5),
TYPE = c("A", "A", "B", "B",
"C", "C", "C", "C",
"D", "D", "D", "D",
"D", "D", "D", "D"),
CLASS = c(1.1, 2.1, 3.3, 4.5,
1.3, 2.4, 3.4, 4.6,
1.4, 2.5, 3.6, 4.0,
1.4, 2.7, 3.2, 4.5))
d您希望使用两个组进行分组,然后使用.N
选择每个数据子集中的最后一行,即.SD
:
R> d[, .SD[.N], by=.(SEQ,TYPE)]
SEQ TYPE CLASS
1: 1 A 2.1
2: 2 B 4.5
3: 1 C 1.3
4: 2 C 3.4
5: 3 C 4.6
6: 1 D 2.5
7: 2 D 3.6
8: 3 D 1.4
9: 4 D 2.7
10: 5 D 4.5
R>
您希望使用两个组进行分组,然后使用.N
选择每个数据子集中的最后一行,即.SD
:
R> d[, .SD[.N], by=.(SEQ,TYPE)]
SEQ TYPE CLASS
1: 1 A 2.1
2: 2 B 4.5
3: 1 C 1.3
4: 2 C 3.4
5: 3 C 4.6
6: 1 D 2.5
7: 2 D 3.6
8: 3 D 1.4
9: 4 D 2.7
10: 5 D 4.5
R>
您也可以尝试:
library(dplyr)
d %>% group_by(TYPE, SSEQ) %>% filter(row_number() == max(row_number()))
# SEQ TYPE CLASS
# 1 1 A 2.1
# 2 2 B 4.5
# 3 1 C 1.3
# 4 2 C 3.4
# 5 3 C 4.6
# 6 1 D 2.5
# 7 2 D 3.6
# 8 3 D 1.4
# 9 4 D 2.7
#10 5 D 4.5
您也可以尝试:
library(dplyr)
d %>% group_by(TYPE, SSEQ) %>% filter(row_number() == max(row_number()))
# SEQ TYPE CLASS
# 1 1 A 2.1
# 2 2 B 4.5
# 3 1 C 1.3
# 4 2 C 3.4
# 5 3 C 4.6
# 6 1 D 2.5
# 7 2 D 3.6
# 8 3 D 1.4
# 9 4 D 2.7
#10 5 D 4.5
你需要两组,看看他的参考输出。是的,我错过了。现在编辑。谢谢。你也可以试着提及你正在使用的软件包。当然,我为它的遗漏道歉。你需要两组,看看他的参考输出。是的,我错过了。现在编辑。谢谢。你也可以试着提及你正在使用的软件包。当然,我为它的遗漏道歉。unique(d,by=c(“SEQ”,“TYPE”),fromLast=TRUE)
应该可以。。。看看我是否能找到一个复制品…检查这个答案,如果你需要一些排序unique(d,by=c(“SEQ”,“TYPE”),fromLast=TRUE)
应该可以。。。看看我能不能找到一个傻瓜…如果你需要订购的话,检查一下这个答案