如何在 R 数据框中为分类变量创建频率列?
要为R数据框中的分类变量创建频率列,我们可以通过使用ave函数定义分类变量的长度来使用变换函数。输出将具有重复的频率,因为分类列中的一个值可能会重复。查看以下示例以了解如何完成。
示例
考虑以下数据框-
Country<-sample(c("India","China","Egypt"),20,replace=TRUE) Response<-rnorm(20) df1<-data.frame(Country,Response) df1输出结果
Country Response 1 Egypt -0.6591480 2 China -1.8163343 3 India -1.0608470 4 Egypt 0.6736968 5 Egypt 0.7686130 6 India -0.5509014 7 Egypt -1.4049758 8 India -0.1783958 9 China -0.3233439 10 China 0.5749841 11 China 0.3870373 12 China -0.9342403 13 China 0.2300502 14 Egypt -0.4034456 15 Egypt -0.5925468 16 India -1.0564102 17 India 0.1227065 18 China 1.7980140 19 China -1.3700720 20 India 0.9327951
在df1中为Country列创建频率列-
示例
transform(df1,Country_Frequency=ave(seq(nrow(df1)),Country,FUN=length))输出结果
Country Response Country_Frequency 1 Egypt -0.6591480 6 2 China -1.8163343 8 3 India -1.0608470 6 4 Egypt 0.6736968 6 5 Egypt 0.7686130 6 6 India -0.5509014 6 7 Egypt -1.4049758 6 8 India -0.1783958 6 9 China -0.3233439 8 10 China 0.5749841 8 11 China 0.3870373 8 12 China -0.9342403 8 13 China 0.2300502 8 14 Egypt -0.4034456 6 15 Egypt -0.5925468 6 16 India -1.0564102 6 17 India 0.1227065 6 18 China 1.7980140 8 19 China -1.3700720 8 20 India 0.9327951 6
示例
Temp<-sample(c("Hot","Cold"),20,replace=TRUE) Y<-rpois(20,2) df2<-data.frame(Temp,Y) df2输出结果
Temp Y 1 Cold 1 2 Hot 1 3 Cold 4 4 Hot 1 5 Hot 2 6 Hot 4 7 Hot 1 8 Hot 1 9 Cold 2 10 Hot 1 11 Cold 1 12 Hot 2 13 Hot 3 14 Cold 2 15 Cold 0 16 Cold 4 17 Hot 4 18 Hot 0 19 Cold 1 20 Cold 1
在df2中为Temp列创建频率列-
示例
transform(df2,Temp_Frequency=ave(seq(nrow(df2)),Temp,FUN=length))输出结果
Temp Y Temp_Frequency 1 Cold 1 9 2 Hot 1 11 3 Cold 4 9 4 Hot 1 11 5 Hot 2 11 6 Hot 4 11 7 Hot 1 11 8 Hot 1 11 9 Cold 2 9 10 Hot 1 11 11 Cold 1 9 12 Hot 2 11 13 Hot 3 11 14 Cold 2 9 15 Cold 0 9 16 Cold 4 9 17 Hot 4 11 18 Hot 0 11 19 Cold 1 9 20 Cold 1 9