计算与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。