我有一个语音转录的数据,叫做trans,还有一个列pos_num,它记录音素t在转录字符串中的位置。
df <- data.frame(
trans = c("ðət", "əˈpærəntli", "ˈkɒntrækt", "təˈwɔːdz", "pəˈteɪtəʊz"), stringsAsFactors = F
)
df$pos_num <- sapply(strsplit(df$trans, ""), function(x) which(grepl("t", x)))
df
trans pos_num
1 ðət 3
2 əˈpærəntli 8
3 ˈkɒntrækt 5, 9
4 təˈwɔːdz 1
5 pəˈteɪtəʊz 4, 7在某些转录中,t不止一次发生,导致pos_num中存在多个值。在这种情况下,我想复制整个行,原始行包含一个值,重复行包含另一个值。预期的产出将是:
df
trans pos_num
1 ðət 3
2 əˈpærəntli 8
3 ˈkɒntrækt 5
4 ˈkɒntrækt 9
5 təˈwɔːdz 1
6 pəˈteɪtəʊz 4
7 pəˈteɪtəʊz 7如何才能做到这一点?(对于其他编程语言,似乎有一些关于这个问题的帖子,但没有R)。
发布于 2020-10-24 08:06:45
library(data.table)
setDT(df)
df[, .(pos_num = unlist((pos_num))),by = .(trans)]https://stackoverflow.com/questions/64511184
复制相似问题