如何在R中将列值转换为列名?
要将列值转换为列名,我们可以使用reshape2包的dcast函数。例如,如果我们有一个名为df的数据框,其中包含两列,即x和y,其中x是分类的,而y是数字的。现在,如果要将x中的类别转换为列名,则可以将其转换为dcast(df,y〜x)。
例1
考虑以下数据帧-
> x1<-sample(c("A","B","C"),20,replace=TRUE) > x2<-rpois(20,5) > df1<-data.frame(x1,x2) > df1输出结果
x1 x2 1 B 4 2 A 2 3 A 5 4 C 3 5 A 7 6 A 4 7 C 6 8 A 5 9 B 4 10 B 3 11 B 7 12 A 8 13 C 2 14 B 4 15 A 5 16 C 5 17 A 6 18 C 1 19 A 6 20 C 3
加载reshape2包并将x1中的值转换为列名-
> library(reshape2) > dcast(df1,x2~x1)
使用x2作为值列:用于value.var覆盖。
缺少聚合函数:默认为长度
输出结果
x2 A B C 1 1 0 0 1 2 2 1 0 1 3 3 0 1 2 4 4 1 3 0 5 5 3 0 1 6 6 2 0 1 7 7 1 1 0 8 8 1 0 0
例2
> Gender<-sample(c("Male","Female"),20,replace=TRUE) > Rate<-rpois(20,3) > df2<-data.frame(Gender,Rate) > df2输出结果
Gender Rate 1 Male 2 2 Male 5 3 Female 6 4 Female 3 5 Male 5 6 Male 1 7 Male 5 8 Male 2 9 Female 3 10 Female 2 11 Male 2 12 Male 3 13 Female 6 14 Male 0 15 Male 5 16 Female 4 17 Male 3 18 Female 5 19 Male 4 20 Female 3
将Gender中的值转换为列名-
> dcast(df2,Rate~Gender)
使用“将比率作为值”列:用于value.var覆盖。
缺少聚合函数:默认为长度
输出结果
Rate Female Male 1 0 0 1 2 1 0 1 3 2 1 3 4 3 3 2 5 4 1 1 6 5 1 4 7 6 2 0