[英]R function that returns altered data for grouped variables
我有一個簡單的示例來說明我的問題:可以說我使用mtcars數據框。 我想通過使用以下功能來更改mtcars$qsec
的數據:
TT.test <- function(x)
{
x<- ifelse(x > 20,x,NA)
return(x)
}
我要抓住的是我想通過分組mtcars$gear
和mtcars$cyl
使用此功能來更改mtcars$qsec
。 因此,我想獲得一個數據框或矩陣,該數據框或矩陣為我提供一個包含更改后數據的數據框。 如果數據框僅包含所考慮的三列,那就很好。
您對如何處理此問題有任何建議嗎?
如果您只想更改該列並按其他列進行分組,則可以使用dplyr進行以下操作:
library(dplyr)
mtcars %>% group_by(gear, cyl) %>% mutate(qsec = TT.test(qsec))
這是結果輸出:
Source: local data frame [32 x 11]
Groups: gear, cyl [8]
mpg cyl disp hp drat wt qsec vs am gear carb
(dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)
1 21.0 6 160.0 110 3.90 2.620 NA 0 1 4 4
2 21.0 6 160.0 110 3.90 2.875 NA 0 1 4 4
3 22.8 4 108.0 93 3.85 2.320 NA 1 1 4 1
4 21.4 6 258.0 110 3.08 3.215 NA 1 0 3 1
5 18.7 8 360.0 175 3.15 3.440 NA 0 0 3 2
6 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
7 14.3 8 360.0 245 3.21 3.570 NA 0 0 3 4
8 24.4 4 146.7 62 3.69 3.190 NA 1 0 4 2
9 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
10 19.2 6 167.6 123 3.92 3.440 NA 1 0 4 4
.. ... ... ... ... ... ... ... ... ... ... ...
如果要突變所有列,可以執行以下操作:
mtcars %>% group_by(gear, cyl) %>% mutate_each(funs(TT.test))
或者,如果您要更改某些選擇列(多個),則可以執行以下操作:
mtcars %>% group_by(gear, cyl) %>% mutate_each(funs(TT.test), c(qsec, hp))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.