gpt4 book ai didi

r - 在每个数据框行中,将每一列与另一个数据框中的键匹配,并在新数据框中对键的值求和

转载 作者:行者123 更新时间:2023-12-01 12:16:51 25 4
gpt4 key购买 nike

我不太确定如何表达我的问题。我认为我想要做的是创建一个循环,获取数据框行中的每个值,将其与另一个数据框中的键匹配,然后对该行每一列中的键值求和,将其存储在新数据中具有与键相同尺寸的框架。

用一个例子来解释应该容易得多。我是 R 和编程的新手,仍在学习词汇。

我有一个单词数据框,其中每一列对应一个音素(独特的语音)。

Words_DF <- data.frame( word = c("CAT", "BAT", "APPLE"), Phoneme1 = c("K", "B", "AE"), Phoneme2 = c("AE", "AE", "P"), Phoneme3 = c("T", "T", "AH"), Phoneme4 = c("Null", "Null", "L"))

word Phoneme1 Phoneme2 Phoneme3 Phoneme4
1 CAT K AE T Null
2 BAT B AE T Null
3 APPLE AE P AH L

我有另一个数据框,其中每个音素对应于一系列二进制值。

 Phoneme_DF <- data.frame( phoneme = c("AE", "AH", "B", "K", "T", "P", "L"), is_consonant = c(0, 0, 1, 1, 1, 1, 1), is_labial = c(0, 0, 0, 0, 0, 1, 0))


phoneme is_consonant is_labial
1 AE 0 0
2 AH 0 0
3 B 1 1
4 K 1 0
5 T 1 0
6 P 1 1
7 L 1 0

我正在尝试找出一种方法遍历我的 Words_DF 的每一行,并在我的 Phoneme_DF 中查找每个音素列中的值并将它们相加到一个新的数据框中,如下所示:

New_DF <- data.frame( word = c("CAT", "BAT", "APPLE"), consonants_in_word = c(2, 2, 3), labials_in_word = c(0, 1, 1))

word consonants_in_word labials_in_word
1 CAT 2 0
2 BAT 2 1
3 APPLE 2 1

我尝试编写某种循环遍历 Words_DF 的每一行并在每一行中遍历每一列并在 Phoneme_DF 中查找该值,然后求和

   New_DF <- data.frame( word = c("CAT", "BAT", "APPLE"), consonants_in_word =      c(0, 0 , 0 ), labials_in_word = c(0, 0, 0))

for(i in 1:length(SAMPLE_Words)){
for(j in 1:length(where(SAMPE_Words[[j]]) %in% SAMPLE_Phoneme_DF[i])) {
rbind(New_DF, sum(Phoneme_DF[i, ]))
}
}

我希望我的问题是有道理的。谢谢你的帮助! :)

最佳答案

我认为您希望输出已关闭,Apple 应该只有 2 个辅音。试试这个:

library(tidyverse)

Words_DF %>%
gather(value, key, -word) %>%
left_join(Phoneme_DF, by = c("key" = "phoneme")) %>%
group_by(word) %>%
mutate(consonants_in_word = sum(is_consonant, na.rm = TRUE),
labials_in_word = sum(is_labial, na.rm = TRUE)) %>%
distinct(word, .keep_all = TRUE) %>%
select(word, consonants_in_word, labials_in_word)

哪个返回:

# A tibble: 3 x 3
# Groups: word [3]
word consonants_in_word labials_in_word
<chr> <int> <int>
1 CAT 2 0
2 BAT 2 1
3 APPLE 2 1

这是我使用的数据:

Words_DF <- read.table(text = "word Phoneme1 Phoneme2 Phoneme3 Phoneme4
1 CAT K AE T Null
2 BAT B AE T Null
3 APPLE AE P AH L",
stringsAsFactors = FALSE, header = TRUE)

Phoneme_DF <- read.table(text = "phoneme is_consonant is_labial
1 AE 0 0
2 AH 0 0
3 B 1 1
4 K 1 0
5 T 1 0
6 P 1 1
7 L 1 0",
stringsAsFactors = FALSE, header = TRUE)

关于r - 在每个数据框行中,将每一列与另一个数据框中的键匹配,并在新数据框中对键的值求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47383655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com