私はこのようなデータを持っています
samplesize <- 6
group <- c(1,2,3)
total <- rep(samplesize,length(group))
outcomeTrue <- c(2,1,3)
df <- data.frame(group,total,outcomeTrue)
私のデータをこのようにしたいと思います
group2 <- c(rep(1,6),rep(2,6),rep(3,6))
outcomeTrue2 <- c(rep(1,2),rep(0,6-2),rep(1,1),rep(0,6-1),rep(1,3),rep(0,6-3))
df2 <- data.frame(group2,outcomeTrue2)
つまり、合計の観測値と成功した観測値が通知されるバイナリデータがありますが、明示的な結果が0または1の個別の観測値として編成することをお勧めします。つまり、望ましい結果の視覚的な例
rでこれを行う簡単な方法はありますか、それとも自分でこれを自動化するためのループを作成する必要がありますか?
これがtidyverrse
。の1つのオプションです。我々はuncount
「グループ」でグループ化された「総」カラムを使用して行を展開するために、に基づいて論理状態を有するバイナリインデックス作成row_number()
および「outcomeTrue」の値を
library(tidyverse)
df %>%
uncount(total) %>%
group_by(group) %>%
mutate(outcomeTrue = as.integer(row_number() <= outcomeTrue[1]))
# A tibble: 18 x 2
# Groups: group [3]
# group outcomeTrue
# <dbl> <int>
# 1 1 1
# 2 1 1
# 3 1 0
# 4 1 0
# 5 1 0
# 6 1 0
# 7 2 1
# 8 2 0
# 9 2 0
#10 2 0
#11 2 0
#12 2 0
#13 3 1
#14 3 1
#15 3 1
#16 3 0
#17 3 0
#18 3 0
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加