我对进行这个争论程序的确切方法有点困惑。
我有一个数据集,其中包含评估肺音的评估者(S1,...,S40)。对于每种声音,评估录音的某些质量(_A、_B、_X)。
数据框看起来像这个 bd 示例(我给出了一个有 3 个评分者的示例,为 2 个不同的特征 A 和 B 的 2 个声音评分)。 您可以看到,每一行代表不同声音 (S_1、S_2) 和声音特征 (_A、_B) 的 1 个评分者结果。
bd <- data.frame(Operator=c("Rater1", "Rater2", "Rater3"),
S1_A=c("Good", "Good", "Bad"), #quality assessment
S1_B=c(3,2,3), #confidence in assessment 1-5 likert scale
S2_A=c("Don't know", "Bad", "Don't know"),
S2_B=c(4,4,2))
我想得到这样的结果:
操作员 | 声音 | A | B |
---|---|---|---|
评分者1 | 1 | 好 | 3 |
评分者1 | 2 | 不知道 | 4 |
评分者2 | 1 | 好 | 2 |
评分者2 | 2 | 不好 | 4 |
评分者3 | 1 | 不好 | 3 |
评分者3 | 2 | 不知道 | 2 |
我无法充分设计代码来首先创建识别声音的列,然后添加声音特征。
提前感谢您的帮助!
您可以将
names_pattern =
与正则表达式一起使用来实现您想要的结果:
library(dplyr)
library(tidyr)
bd |>
pivot_longer(cols = -Operator,
names_to = c("Session", ".value"),
names_pattern = "S(\\d)_(A|B)")
# # A tibble: 6 × 4
# Operator Session A B
# <chr> <chr> <chr> <dbl>
# 1 Rater1 1 Good 3
# 2 Rater1 2 Don't know 4
# 3 Rater2 1 Good 2
# 4 Rater2 2 Bad 4
# 5 Rater3 1 Bad 3
# 6 Rater3 2 Don't know 2