df
個人からの繰り返しのサンプリングがある再現性があります。各サンプルについて、サンプルが取得された順序と使用されたメディア(AまたはB)を追跡します。
dat <- data.frame(IndID = factor(c(1,1,2,2,2,3,3)),
Order = c(1,2,1,2,3,1,2),
Media = factor(c("A", "B", "B","A","B","A", "A")))
dat
IndID Order Media
1 1 1 A
2 1 2 B
3 2 1 B
4 2 2 A
5 2 3 B
6 3 1 A
7 3 2 A
メディアと、メディアの各レベル内のサンプリング順序を示す番号を含む新しい列を作成したいと思います。言い換えると、IndIDとMediaでグループ化して、サンプルを注文する新しい列を作成したいと思います。個人ごとに、2つの異なるメディア(IndID 1など)にサンプルが2つしかない場合、新しい値は「A1」と「B1」になります。同じメディアからのサンプルが2つある場合、新しい値は、サンプリング順序に従う順序で「B1」と「B2」である必要があります。
上記のデータを前提として、次の列を作成しようとしています
dat$WantThis <- c("A1", "B1","B1", "A1","B2", "A1", "A2")
IndID Order Media WantThis
1 1 1 A A1
2 1 2 B B1
3 2 1 B B1
4 2 2 A A1
5 2 3 B B2
6 3 1 A A1
7 3 2 A A2
dplyr
パッケージを使おうとしていますが、の2番目の引数として含める必要があるものにドットを接続できませんpaste
。
dat2 <- as.data.frame(dat %>% group_by(IndID, Media) %>% mutate(MediaOrder = paste0(Media, ???? )))
前もって感謝します。私はどんな提案も歓迎します。
グループ化の行番号を使用すると、必要なものが得られるはずです。
library(dplyr)
dat <- data.frame(IndID = factor(c(1,1,2,2,2,3,3)),
Order = c(1,2,1,2,3,1,2),
Media = factor(c("A", "B", "B","A","B","A", "A")))
res <- dat %>%
group_by(IndID, Media) %>%
mutate(count = row_number(),
WantThis = paste(Media,count,sep=""))
#Source: local data frame [7 x 5]
#Groups: IndID, Media [5]
#
# IndID Order Media count WantThis
# (fctr) (dbl) (fctr) (int) (chr)
#1 1 1 A 1 A1
#2 1 2 B 1 B1
#3 2 1 B 1 B1
#4 2 2 A 1 A1
#5 2 3 B 2 B2
#6 3 1 A 1 A1
#7 3 2 A 2 A2
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加