[英]Replacing words in Dataframe by values in another Dataframe in R
我正在嘗試將Dataframe 中的字符串值替換為另一個中的數值。 讓我創建一個示例:
df1 <- data.frame("Time" = seq(1, 3, 1),
"Words" = c("dog cat", "bird fish", "elephant shark turtle"))
這是我的主 Dataframe。它非常簡單:第一列指的是花費的時間,第二列顯示在該特定時間注冊的每個單詞。 另一個Dataframe是:
df2 <- data.frame("Words" = c("turtle", "bird", "dog", "elephant", "cat", "shark", "fish"),
"Points" = seq(1, 7, 1))
這個Dataframe指的是每個Word完成的Points。 我的目標是計算每個時間段的點數的中位數。 例如,當時間 = 1 時,“狗”等於 3 而“貓”等於 5,因此中位數將為 4 。
我在這方面遇到了很多麻煩。 首先是如何分隔字符串中的單詞。 然后,我認為我必須創建一個循環來在 df2 中搜索出現在 df1 中的值並將它們替換為它們的值。 最后,我必須達到每個時間段的中位數才能完成任務。
有任何想法嗎?
library(tidyverse)
df1 %>%
mutate(Words = strsplit(df1$Words, " ")) %>%
unnest(Words) %>%
inner_join(df2, by="Words") %>%
group_by(Time) %>%
summarize(Score = median(Points))
library(data.table)
setDT(df1)[,.(Words=strsplit(Words, " ")[[1]]),by=Time] %>%
.[setDT(df2), on=.(Words)] %>%
.[,(Score = median(Points)), by=Time]
Output:
Time Score
<dbl> <dbl>
1 1 4
2 2 4.5
3 3 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.