パンダでは、次のようなカスタム関数を使用して行単位の操作を頻繁に実行します。
df = pd.DataFrame({'v1': [1, 2, 3], 'v2': [3, 4, 6], 'v3': [3, 4, 5]})
def f(row):
return(sum(row[["v1", "v3"]]) if row.v2 == 3 else 7)
df["new_col"] = df.apply(f, 1)
dplyrに相当するものは何ですか?
関数 f は、v1 から v3 だけでなく、多くの変数を使用できる可能性があることに注意してください。
編集:現在Rにあるもののコード例。このソリューションでは、適切かどうか疑問に思っている代名詞オブジェクトを渡しています。
d <- tibble(v1 = c(1,2,3), v2 = c(3,4,6), v3 = c(3,4,5))
f <- function(row){
if (row$v2 == 3) sum(something?) else 7
}
d %>% rowwise() %>% mutate(new_column = f(.data)) %>% ungroup()
edit2: 予想される出力。(インデックス列は重要ではありません)
v1 v2 v3 new_col
0 1 3 3 4
1 2 4 4 7
2 3 6 5 7
注: この特定の問題の解決策を探しているわけではありません。パンダの apply() のように、R/dplyr の関数に行を渡す一般的な方法に興味があります。