Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取与R中data.table中的条件匹配的最后一行_R_Data.table - Fatal编程技术网

获取与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)
应该可以。。。看看我能不能找到一个傻瓜…如果你需要订购的话,检查一下这个答案