R 使用mutate创建新数据列
使用以下数据:R 使用mutate创建新数据列,r,dplyr,mutate,R,Dplyr,Mutate,使用以下数据: data <- data.frame(Name=c("11C","11C","12C","12C","20D","20D"), PID=c("AD15E","AD15E","AA05D","AA05D","Z48J","Z48J"), Type=c("Home","Auto","Home","Auto","Home","Auto"), Brand=c("A","B","C","H","
data <- data.frame(Name=c("11C","11C","12C","12C","20D","20D"),
PID=c("AD15E","AD15E","AA05D","AA05D","Z48J","Z48J"),
Type=c("Home","Auto","Home","Auto","Home","Auto"),
Brand=c("A","B","C","H","I","D"),
Model=c("A152","K235","W54","H2","A57","Y0878"))
data在结果中使用类型列Home是没有意义的,因为类型列指向标题,并且对于每一行,您都混合了Home和Auto值;没有该列,只需执行重塑的简单任务:
reshape(data, idvar = c("Name", "PID"), timevar = "Type", direction = "wide")
# Name PID Brand.Home Model.Home Brand.Auto Model.Auto
#1 11C AD15E A A152 B K235
#3 12C AA05D C W54 H H2
#5 20D Z48J I A57 D Y0878
为了进行比较,以下是您的结果:
result
# Name PID Type HomeBrand HomeModel AutoBrand AutoModel
#1 11C AD15E Home A A152 B K235
#2 12C AA05D Home C W54 H H2
#3 20D Z48J Home I A57 D Y0878
在结果中使用Home类型列没有意义,因为该类型列指向标题,并且对于每一行,您混合使用Home和Auto值;没有该列,只需执行重塑的简单任务:
reshape(data, idvar = c("Name", "PID"), timevar = "Type", direction = "wide")
# Name PID Brand.Home Model.Home Brand.Auto Model.Auto
#1 11C AD15E A A152 B K235
#3 12C AA05D C W54 H H2
#5 20D Z48J I A57 D Y0878
为了进行比较,以下是您的结果:
result
# Name PID Type HomeBrand HomeModel AutoBrand AutoModel
#1 11C AD15E Home A A152 B K235
#2 12C AA05D Home C W54 H H2
#3 20D Z48J Home I A57 D Y0878
我们可以使用dcast
library(data.table)
dcast(setDT(data), Name + PID ~ Type, value.var = c("Brand", "Model"), sep="")
# Name PID BrandAuto BrandHome ModelAuto ModelHome
#1: 11C AD15E B A K235 A152
#2: 12C AA05D H C H2 W54
#3: 20D Z48J D I Y0878 A57
我们可以使用dcast
library(data.table)
dcast(setDT(data), Name + PID ~ Type, value.var = c("Brand", "Model"), sep="")
# Name PID BrandAuto BrandHome ModelAuto ModelHome
#1: 11C AD15E B A K235 A152
#2: 12C AA05D H C H2 W54
#3: 20D Z48J D I Y0878 A57