dplyr
独自の関数で関数を使用するのに苦労しています。理解に近づいていますが、まだ完全には理解できていません。ここには、df
変数type
とD10
変数があります。
df <- data.frame(type = c("KL", "KL", "A", "A", "B", "B", "9999", "-1"),
D10 = rnorm(8, 3, 4))
;M
の場合に新しい列で返される関数を書きたいと思います。ifとそれは他のすべての場合に返されます。関数の開始時に の値を変更できるようにしたい。type == "KL"
"-1"
type %in% c(9999, -1)
K
9999, -1, KL
私の試みは、次のような関数で終了しました:
klme <- function(dat, met, minusy = c(-1, 9999), Sortnr, type){
mutate_call <- lazyeval::interp(~ifelse(a %in% met, "M", ifelse(a %in% minusy, "-1", "K")), a = as.name(Sortnr))
dat %>% mutate_(.dots = setNames(list(mutate_call), type))
}
klme(df, c("KL"), minusy = c(-1, 9999), "Sortnr", "typ")
次のような出力を取得したいのですK
が、列にのみ返されます。typ
type D10 type.1
1 KL -5.3210620 M
2 KL 4.4832414 M
3 A -5.3979886 K
4 A 2.7933964 K
5 B -0.9602293 K
6 B 4.5097305 K
7 9999 -3.9650796 -1
8 -1 5.2700609 -1