如何把长格式数据转换为宽格式,并将缺失值填充为0
我有一个已经包含NA的长格式表:
df <- data.frame(
ID = c(1, 1, 2, 2, 3),
region = c("A", "B", "A", "B", "A"),
status = c(1, NA, 1, 1, NA)
)
我想把它转换为宽格式,但并不是用NA来填充缺失值,而是用零来填充,这样就能与长格式中的原始NA区分开。
reshape(
df,
idvar = "ID",
timevar = "region",
direction = "wide"
)
这里举个例子,由于对ID=3、region=B没有信息,它就变成了另一个NA,我希望把它改为零。
解决方案
这可能是一个重复的问题,但这里给出一个使用data.table的解法:
library(data.table)
setDT(df)
dcast(df, ID ~ region, fill = 0)
# ID A B
# <num> <num> <num>
# 1: 1 1 NA
# 2: 2 1 1
# 3: 3 NA 0
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。