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_Database_Data Manipulation - Fatal编程技术网

计算与R中另一列的其他元素匹配的元素的频率

计算与R中另一列的其他元素匹配的元素的频率,r,database,data-manipulation,R,Database,Data Manipulation,说我有 Name<- c("A", "A", "A", "A", "A", "B", "B", "B", "B", "C", "C", "C") Cate<- c("a", "a", "b", "b", "c", "a", "a", "a", "c", "b", "b", "c") 其中,fra,frb和frc分别是Cate中针对Nam的每个类别(a、b、c)的a、b和c值的频率值 我正在寻找一种比我正在使用的代码更快的代码(在每个类别中划分Nam,然后计算频率)我们可以从数据中执

说我有

Name<- c("A", "A", "A", "A", "A", "B", "B", "B", "B", "C", "C", "C")
Cate<- c("a", "a", "b", "b", "c", "a", "a", "a", "c", "b", "b", "c")
其中,
fra
frb
frc
分别是
Cate
中针对
Nam
的每个类别(a、b、c)的a、b和c值的频率值


我正在寻找一种比我正在使用的代码更快的代码(在每个类别中划分Nam,然后计算频率)

我们可以从
数据中执行
dcast
。表
非常高效和快速

library(data.table)
dcast(data.table(Name, Cate), Name ~paste0("fr", Cate))
#   Name fra frb frc
#1:    A   2   2   1
#2:    B   3   0   1
#3:    C   0   2   1

一个简单的
baser
选项是

table(Cate, Name)
数据
Name我们可以从
data.table
中执行
dcast
,这非常高效和快速

library(data.table)
dcast(data.table(Name, Cate), Name ~paste0("fr", Cate))
#   Name fra frb frc
#1:    A   2   2   1
#2:    B   3   0   1
#3:    C   0   2   1

一个简单的
baser
选项是

table(Cate, Name)
数据
Name您还可以使用
xtabs()
功能:

    xtabs(~Name + Cate)

您还可以使用
xtabs()
功能:

    xtabs(~Name + Cate)

为了完整起见,这里有一个Hadleyverse解决方案:

library(dplyr)
library(tidyr)

data.frame(Name, Cate) %>%
  count(Name, Cate) %>%
  spread(key = Cate, value = n, fill = 0)

为了完整起见,这里有一个Hadleyverse解决方案:

library(dplyr)
library(tidyr)

data.frame(Name, Cate) %>%
  count(Name, Cate) %>%
  spread(key = Cate, value = n, fill = 0)

只需使用
选项卡,不要忘记为
Name
Cate
值加引号,但我猜你只是忘记了它作为示例。只需使用
选项卡,不要忘记为
Name
Cate
值加引号,但我猜你只是忘记了它作为示例。
Name
应该有5As,4B和3C。
名称
应具有5A、4B和3C。