如何解决是否有一个函数可以根据另一列的条件替换列中的特定值?
我希望将“Manner”列中“文件名”列中包含“kala”、“kalla”的所有单词(前两个首字母表示扬声器)中的当前值从“Sonorant”替换为“Liquid” .
我的想法是它可以通过“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
解决方法
您可以检查 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
,
library(tidyverse)
my_data <- tibble::tribble(
~Filename,~Consonant,~Place,~Manner,"AK_kala.TextGrid","Singleton","Dental/alveolar","Sonorant","AK_kalla.TextGrid","Geminate","AK_manni.TextGrid","AK_rami.TextGrid","Bilabial","AK_rammi.TextGrid","AK_sune.TextGrid","Sonorant"
)
my_data %>%
mutate(Manner = if_else(
Filename %>% str_detect("kala|kalla"),"Liquid",Manner
))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。