簡體   English   中英

1次調用即可創建多個列

[英]plyr multiple columns in 1 call

這是我的數據結構:

> 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,並且我開始意識到花了我很長時間才進入這個很棒的圖書館。

提前致謝。

嘗試這個。

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)

如有疑問,請閱讀文檔? ;-)

這很簡單:使用.(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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM