Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.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中有多列的数据表中某个值的频率?_R - Fatal编程技术网

计算R中有多列的数据表中某个值的频率?

计算R中有多列的数据表中某个值的频率?,r,R,假设我有这样一个数据表: id days age "jdkl" 8 23 "aowl" 1 09 "mnoap" 4 82 "jdkl" 3 14 "jdkl" 2 34 "mnoap" 27 56 id count "jdkl" 3 "aowl" 2 "mnoap" 1 我想创建一个新的数据表,其

假设我有这样一个数据表:

id       days       age
"jdkl"   8          23
"aowl"   1          09
"mnoap"  4          82
"jdkl"   3          14
"jdkl"   2          34
"mnoap"  27         56
id          count
"jdkl"      3
"aowl"      2
"mnoap"     1
我想创建一个新的数据表,其中一列带有ID,另一列带有它们出现的次数。我知道数据表中有=.N的内容,但我不确定如何只对一列使用它

最终的数据表如下所示:

id       days       age
"jdkl"   8          23
"aowl"   1          09
"mnoap"  4          82
"jdkl"   3          14
"jdkl"   2          34
"mnoap"  27         56
id          count
"jdkl"      3
"aowl"      2
"mnoap"     1

您只需从基本
R
使用
表格

as.data.frame(sort(table(df$id), decreasing = T))
但是,如果要使用
data.table执行此操作,请执行以下操作:

library(data.table)
setDT(df)[, .(Count = .N), by = id][order(-Count)]
或者有
dplyr
解决方案

library(dplyr)
df %>% count(id) %>% arrange(desc(n))

您只需从基本
R
使用
表格

as.data.frame(sort(table(df$id), decreasing = T))
但是,如果要使用
data.table执行此操作,请执行以下操作:

library(data.table)
setDT(df)[, .(Count = .N), by = id][order(-Count)]
或者有
dplyr
解决方案

library(dplyr)
df %>% count(id) %>% arrange(desc(n))
我们可以使用

library(dplyr)
df %>%
    group_by(id) %>%
    summarise(Count = n()) %>%
    arrange(desc(Count))

或者使用
base R中的
aggregate

r1 <- aggregate(cbind(Count=days)~id, df1, length)
r1[order(-r1$Count),]
#      id Count
#2  jdkl     3
#3 mnoap     2
#1  aowl     1
r1我们可以使用

library(dplyr)
df %>%
    group_by(id) %>%
    summarise(Count = n()) %>%
    arrange(desc(Count))

或者使用
base R中的
aggregate

r1 <- aggregate(cbind(Count=days)~id, df1, length)
r1[order(-r1$Count),]
#      id Count
#2  jdkl     3
#3 mnoap     2
#1  aowl     1

r1@shayaa:我安排它与OP发布的输出相匹配。太懒了,无法安排base
R
的输出:D@shayaa:我将其安排为与OP发布的输出相匹配。太懒了,无法安排base
R
:D的输出