以下是我的数据结构:
> str(highered.tweets)
'data.frame': 2950 obs. of 5 variables:
$ created_at : POSIXlt, format: "2012-02-13 20:41:36" "2012-02-13 20:37:00" ...
$ from_user : chr "feministtexican" "OzGrrl09" "LuanaClarke" "LostBookEnds" ...
$ from_user_id: chr "68253996" "63451221" "273757811" "118199557" ...
$ tweet_idstr : chr "169234804729069570" "169233649844236288" "169233398240526337" "169232836795187203" ...
$ text : chr
以下是我试图传递给plyr的函数:
NTWEETS <- function(x) nrow(x)
NUNIQUE <- function(x) length(unique(x$from_user_id))
这很好用:
ddply(highered.tweets[,c(1,3)], .(format(created_at, "%j%H" )), NTWEETS)
ddply(highered.tweets[,c(1,3)], .(format(created_at, "%j%H" )), NUNIQUE)
然而这失败了:
ddply(highered.tweets[,c(1,3)], .(format(created_at, "%j%H" )), transform,
NTWEETS,
NUNIQUE)
Error in as.POSIXlt.POSIXct(x, tz) : invalid 'tz' value
任何帮助将不胜感激。我刚刚开始使用plyr,我开始意识到我花了太长时间才潜入这个伟大的图书馆。
提前致谢。
答案 0 :(得分:5)
试试这个。
summary_tweets <- function(x){
num_tweets <- NROW(x)
unique_tweets <- length(unique(x$from_user_id))
data.frame(num_tweets, unique_tweets)
}
ddply(highered.tweets[,c(1,3)], .(format(created_at, "%j%H" )), summary_tweets)
答案 1 :(得分:1)
如有疑问,请阅读文档? ;-)
这很简单:使用.(var1, var2, ...)
。这是一个例子。我们老旧的mtcars数据:
R> head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
例如,重做所有变量的条件均值以条件方式对传输的组合(am
如自动或不自动)和齿轮:
R> ddply(mtcars, .(am,gear), colMeans)
mpg cyl disp hp drat wt qsec vs am gear carb
1 16.1067 7.46667 326.300 176.133 3.13267 3.8926 17.692 0.20 0 3 2.66667
2 21.0500 5.00000 155.675 100.750 3.86250 3.3050 20.025 1.00 0 4 3.00000
3 26.2750 4.50000 106.688 83.875 4.13375 2.2725 18.435 0.75 1 4 2.00000
4 21.3800 6.00000 202.480 195.600 3.91600 2.6326 15.640 0.20 1 5 4.40000
R>