0

我希望将“文件名”列(前两个首字母表示扬声器)中包含“kala”、“kalla”的所有单词从“Sonorant”替换为“Liquid”,替换“Manner”列中的现值。

我的想法是它可以通过'dplyr'(可能是'grep')执行,但不知道如何。这可以在 MS Excel 中完成,但手动完成会花费大量时间。

任何帮助都会很棒。提前致谢。

我的一些数据在这里:

Filename Consonant           Place   Manner
9   AK_kala.TextGrid Singleton Dental/alveolar Sonorant
10 AK_kalla.TextGrid  Geminate Dental/alveolar Sonorant
14 AK_manni.TextGrid  Geminate Dental/alveolar Sonorant
15  AK_rami.TextGrid Singleton        Bilabial Sonorant
16 AK_rammi.TextGrid  Geminate        Bilabial Sonorant
20  AK_sune.TextGrid Singleton Dental/alveolar Sonorant
4

2 回答 2

0

您可以检查列中的模式Filename并将Manner列转为'Liquid'

df$Manner[grep('kall?a', df$Filename)] <- 'Liquid'
#Maybe this is more clear
#df$Manner[grep('kala|kalla', df$Filename)] <- 'Liquid'
df

#            Filename Consonant           Place   Manner
#9   AK_kala.TextGrid Singleton Dental/alveolar   Liquid
#10 AK_kalla.TextGrid  Geminate Dental/alveolar   Liquid
#14 AK_manni.TextGrid  Geminate Dental/alveolar Sonorant
#15  AK_rami.TextGrid Singleton        Bilabial Sonorant
#16 AK_rammi.TextGrid  Geminate        Bilabial Sonorant
#20  AK_sune.TextGrid Singleton Dental/alveolar Sonorant
于 2021-03-10T07:29:51.657 回答
0
library(tidyverse)
my_data <- tibble::tribble(
            ~Filename,  ~Consonant,            ~Place,    ~Manner,
   "AK_kala.TextGrid", "Singleton", "Dental/alveolar", "Sonorant",
  "AK_kalla.TextGrid",  "Geminate", "Dental/alveolar", "Sonorant",
  "AK_manni.TextGrid",  "Geminate", "Dental/alveolar", "Sonorant",
   "AK_rami.TextGrid", "Singleton",        "Bilabial", "Sonorant",
  "AK_rammi.TextGrid",  "Geminate",        "Bilabial", "Sonorant",
   "AK_sune.TextGrid", "Singleton", "Dental/alveolar", "Sonorant"
  )


my_data %>%
  mutate(Manner = if_else(
    Filename %>% str_detect("kala|kalla"),
    "Liquid",
    Manner
  ))
于 2021-03-10T07:33:57.537 回答