質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
RStudio

RStudioは、Rのプログラミングを効率化する統合開発環境です。統計計算とグラフィックスができるプログラミング言語であるRのIDEでOSSで公開されています。ソースコードやコンソールなどが一つの画面に見やすく配置されている点が特徴。コマンド名以外に、関数名やパッケージ名も補完できます。

Q&A

1回答

285閲覧

【R】カウントデータを横長のテーブルにしたい

toufya

総合スコア15

RStudio

RStudioは、Rのプログラミングを効率化する統合開発環境です。統計計算とグラフィックスができるプログラミング言語であるRのIDEでOSSで公開されています。ソースコードやコンソールなどが一つの画面に見やすく配置されている点が特徴。コマンド名以外に、関数名やパッケージ名も補完できます。

0グッド

0クリップ

投稿2022/06/28 08:51

以下のようなデータフレームを想定します。
各ステーションごとのspeciesAとBの体長と、それに対応するカウントデータです。

> set.seed(10) > df <- data.frame( + species = c(rep("A",4), rep("B",4)), + station = rep(1:2, 4), + length = round(rnorm(8, 15, 2)), + count = round(rnorm(8, 5, 2)) + ) > df species station length count 1 A 1 15 2 2 A 2 15 4 3 A 1 12 7 4 A 2 14 7 5 B 1 16 5 6 B 2 16 7 7 B 1 13 6 8 B 2 14 5

これを以下のような2cm刻みのテーブルに変形したいのですが、どうすればよいでしょうか?

> cnt_table <- data.frame( + species = c("A","A","B","B"), + station = c(1,2,1,2), + L11_12 = c(0,0,0,0), + L13_14 = c(7,7,6,5), + L15_16 = c(2,4,5,7), + L17_18 = c(0,0,0,0), + L19_20 = c(0,0,0,0) + ) > cnt_table species station L11_12 L13_14 L15_16 L17_18 L19_20 1 A 1 0 7 2 0 0 2 A 2 0 7 4 0 0 3 B 1 0 6 5 0 0 4 B 2 0 5 7 0 0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

※ 出現回数が 0 の範囲は含まれません

r

1suppressMessages(library(dplyr)) 2suppressMessages(library(tidyr)) 3 4s <- seq(11, 21, 2) 5labels <- sapply(s[-length(s)], function(x) paste('L', x, '_', x+1, sep='')) 6df %>% 7 mutate(l = cut(length, s, right = F, labels=labels)) %>% 8 pivot_wider(names_from = l, values_from = count, names_sort = T) %>% 9 group_by(species, station) %>% 10 summarise(across(-length, sum, na.rm = T), .groups='keep') 11 12# 13# A tibble: 4 × 5 14# Groups: species [2] 15 species station L11_12 L13_14 L15_16 16 <chr> <int> <dbl> <dbl> <dbl> 171 A 1 7 0 2 182 A 2 0 7 4 193 B 1 0 6 5 204 B 2 0 5 7

投稿2022/06/28 11:17

編集2022/06/28 13:45
melian

総合スコア19618

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問