このようなサンプルデータフレームがあります。最初の列の個々の役割に基づいて、各列(合計)の値を集計したいと思います。しばらく試しましたが、最初の列が文字列の場合の処理方法がわかりません。そして、合計で最後の行を取得できれば、それはプラスになります。ただし、各役割の集計値を取得できれば、もう嬉しいです。どうすればいいですか?ありがとうございました!
df:
profession apple banana grape pear
teacher 1 0 1 0
student 0 1 0 1
student 1 0 1 1
journalist 1 1 0 1
teacher 0 0 0 1
bus driver 1 0 0 0
journalist 1 0 1 1
bus driver 0 0 0 1
teacher 1 0 0 1
出力:
profession apple banana grape pear
teacher 2 0 1 2
student 1 1 1 2
journalist 2 1 2 2
bus driver 1 0 0 1
sum 6 2 4 7
オプションはsum
、 'profession'でグループ化してから、colSums
library(dplyr)
library(tibble)
df %>%
group_by(profession) %>%
summarise(across(where(is.numeric), sum), .groups = 'drop') %>%
add_row(profession = 'sum', !!! colSums(.[-1]))
-出力
# A tibble: 5 x 5
# profession apple banana grape pear
# <chr> <dbl> <dbl> <dbl> <dbl>
#1 bus driver 1 0 0 1
#2 journalist 2 1 1 2
#3 student 1 1 1 2
#4 teacher 2 0 1 2
#5 sum 6 2 3 7
またはadorn_totals
から使用janitor
library(janitor)
df %>%
group_by(profession) %>%
summarise(across(where(is.numeric), sum), .groups = 'drop') %>%
adorn_totals()
# profession apple banana grape pear
# bus driver 1 0 0 1
# journalist 2 1 1 2
# student 1 1 1 2
# teacher 2 0 1 2
# Total 6 2 3 7
df <- structure(list(profession = c("teacher", "student", "student",
"journalist", "teacher", "bus driver", "journalist", "bus driver",
"teacher"), apple = c(1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 1L), banana = c(0L,
1L, 0L, 1L, 0L, 0L, 0L, 0L, 0L), grape = c(1L, 0L, 1L, 0L, 0L,
0L, 1L, 0L, 0L), pear = c(0L, 1L, 1L, 1L, 1L, 0L, 1L, 1L, 1L)),
class = "data.frame", row.names = c(NA,
-9L))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加