【发布时间】:2019-02-24 17:37:41
【问题描述】:
我一直在尝试使用 reshape2 中的 dcast() 函数来扩大 R 中的大型数据框。但是,我不确定该聚合函数 fun.aggregate 使用什么 dcast 需要,因为我想保留value.var 的离散值,而dcast 坚持强制length 作为默认值,使每个值都是二分法。为了说明,我的数据如下所示:
x <- c("a", "b", "c")
y <- c("d", "e", "f")
num <- c(10, 20, 21)
data <- data.frame(cbind(x,y,num))
x y num
a d 10
b e 20
c f 21
输入m <- dcast(data, x ~ y, value.var = "num")后,dcast返回如下DF:
d e f
a 1 0 0
b 0 1 0
c 0 0 1
但是,我希望它看起来像这样:
d e f
a 10 0 0
b 0 20 0
c 0 0 21
我做错了什么?
【问题讨论】:
-
对不起,这是一个错误。我的意思是让
ad的值等于 10,而不是 21。谢谢! -
谢谢,我忘了把元素放在引号里。我现在就改一下。
-
dcast(data, x ~ y, value.var = "num", fill = 0)给我你想要的输出。不知道第一个结果来自哪里,如果我运行你在问题中输入的代码,我会得到你想要的输出NAs 而不是 0s。 -
@IceCreamToucan 你是对的,它似乎适用于较小的 DF。我试图使用的数据要大得多(n = 6000),所以这一定是导致问题的原因。如果我想不出更好的解决方案,我想我会尝试将所有内容绑定在一起。
标签: r dataframe reshape reshape2