我对R比较陌生,目前正致力解决以下问题:
我的数据框集或多或少的结构如下:
Filename
F_W07FP_W10HS_TalkTurns_I1.docx 0
F_W07FP_W10HS_TalkTurns_I1.docx 1
F_W07FP_W10HS_TalkTurns_I1.docx 2
F_S02BE_G04KH_TalkTurnsI1.docx 1
F_S02BE_G04KH_TalkTurnsI1.docx 1
F_S02BE_G04KH_TalkTurnsI1.docx 1
F_S02BE_G04KH_TalkTurnsI1.docx 2
F_S02BE_G04KH_TalkTurnsI1.docx 3
F_L05RJ_L11SM_Talk TurnsI1.docx 5
F_L05RJ_L11SM_Talk TurnsI1.docx 2
F_L05RJ_L11SM_Talk TurnsI1.docx 1
现在我想添加一个重复值为c(1,2)的新列,如果我只这样做,它可以正常工作:
data_rLSM[,length(data_rLSM[1,])+1] <-rep(c(1,2))
但是在我的最终数据集中,我需要根据第一行中的值再次启动值1,2。因此,当第一列中的值发生变化时,我需要R重新开始计数。文件名始终是我的第一列,而扬声器总是添加在最后一列的后面。最后它应该是这样的:
Filename x Speaker
F_W07FP_W10HS_TalkTurns_I1.docx 0 1
F_W07FP_W10HS_TalkTurns_I1.docx 1 2
F_W07FP_W10HS_TalkTurns_I1.docx 2 1
F_S02BE_G04KH_TalkTurnsI1.docx 1 1
F_S02BE_G04KH_TalkTurnsI1.docx 1 2
F_S02BE_G04KH_TalkTurnsI1.docx 1 1
F_S02BE_G04KH_TalkTurnsI1.docx 2 2
F_S02BE_G04KH_TalkTurnsI1.docx 3 1
F_L05RJ_L11SM_Talk TurnsI1.docx 5 1
F_L05RJ_L11SM_Talk TurnsI1.docx 2 2
F_L05RJ_L11SM_Talk TurnsI1.docx 1 1
我一直在尝试这个:
for(i in 1:name)
{
data_rLSM[length(data_rLSM[1,])+1] <-rep_len(c(1,2), length.out = length(unique(data_rLSM[,i]))
}
但说实话,我完全不知道自己在做什么。我真的很感激一些好的想法或方法来解决我的问题:)
谢谢!
答案 0 :(得分:0)
让我们从数据集开始:
df <- data.frame(filename = c(rep('a', 3), rep('b', 4), rep('c', 2)))
然后:
require(dplyr)
df <- df %>%
group_by(., filename) %>%
mutate(., Speaker = rep(c(1, 2), length.out = n()))
我们完成了!