LoginSignup
12
9

More than 5 years have passed since last update.

Rでデータフレームを行ごと・列ごとに処理した結果を再度データフレームに戻す

Posted at

すぐにわからなかったのでメモ
2つ方法見つけましたが上のほうが簡単かな

sample.R
df <- data.frame(x=1:3,y=3:5,z=5:7)

# 行ごと
data.frame(t(apply(df, 1, function(d){ c(d, Z=sum(d)) })))
data.frame(do.call(rbind, lapply(split(df, 1:nrow(df)), function(d){ c(d, Z=sum(d)) })))

# 列ごと
data.frame(apply(df, 2, function(d){ c(d, sum(d)) }))
data.frame(do.call(cbind, lapply(df, function(d){ c(d, sum(d)) })))
結果
> df <- data.frame(x=1:3,y=3:5,z=5:7)
> 
> # 行ごと
> data.frame(t(apply(df, 1, function(d){ c(d, Z=sum(d)) })))
  x y z  Z
1 1 3 5  9
2 2 4 6 12
3 3 5 7 15
> data.frame(do.call(rbind, lapply(split(df, 1:nrow(df)), function(d){ c(d, Z=sum(d)) })))
  x y z  Z
1 1 3 5  9
2 2 4 6 12
3 3 5 7 15
> 
> # 列ごと
> data.frame(apply(df, 2, function(d){ c(d, sum(d)) }))
  x  y  z
1 1  3  5
2 2  4  6
3 3  5  7
4 6 12 18
> data.frame(do.call(cbind, lapply(df, function(d){ c(d, sum(d)) })))
  x  y  z
1 1  3  5
2 2  4  6
3 3  5  7
4 6 12 18
12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9