gpt4 book ai didi

r - 在 ffdf 上应用 tidyr 的传播

转载 作者:行者123 更新时间:2023-12-02 01:34:07 24 4
gpt4 key购买 nike

在普通数据框上,我可以根据特定列展开所有数据。但是我怎么能在 ffdf 上做到这一点。

我有这样的输入。

         Uid      article_Topic frqnu
1 1234567890 Cricket 2
2 1234567891 Cricket 3
3 1234567892 Cricket 4
4 abcd Cricket 5
5 1234567894 Cricket 6
6 1234567890 Food Package 2
7 1234567895 FootBall 7

spread(data=ffg1,article_Topic,frqnu,fill=0) 在 data.frame 上给出

      userID Cricket Food Package FootBall 
1 1234567890 2 2 0
2 1234567891 3 0 0
3 1234567892 4 0 0
4 1234567894 6 0 0
5 1234567895 0 0 7
6 1234567896 0 0 0
7 abcd 5 0 0

实现类似输出的任何其他方式也会有所帮助。我需要在 ffdf 上做这个到目前为止,我对 R 不太熟悉。感谢您的帮助。

更新:我试着这样做

library(ff)
library(ffbase)
library(dplyr)
library(tidyr)
ffg= read.csv.ffdf(file="text.txt",header=FALSE,sep="\t")
colnames(ffg)<-c("userID","article_Topic","frqnu")
spread(data=ffg,article_Topic,frqnu,fill=0)

这给出了一个错误:“spread_”没有适用的方法应用于“ffdf”类的对象

最佳答案

我们可以使用 library(ffbase) 中的 ffdfdplyffdf 对象执行拆分-应用-组合。它根据 split 拆分对象,将 FUN 应用于“数据”,并将结果存储为 ffdf 对象。因此,在 FUN 中,我们可以使用常规的 dcast

library(ffbase)
library(reshape2)
ffdfdply(x=ffg, split=ffg$userID, FUN= function(x) {
dcast(x, userID~article_Topic, value.var='frqnu', fill=0)
})

或者传播语法。

library(tidyr)
ffdfdply(x=ffg, split=ffg$userID, FUN= function(x) {
spread(x, article_Topic, frqnu, fill=0)
})

关于r - 在 ffdf 上应用 tidyr 的传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32197325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com