tidyr/data.table: gather/melt 仅值,丢弃键
tidyr/data.table: gather/melt only values, discard keys
我想要 gather/melt 一个没有键值最终输出的数据框。所有值都应在一列中结束。
library(tidyverse)
library(tidytext)
data <- get_sentiments("nrc")
我处理的数据如下所示:
nrc_wide <- dcast(nrc, word ~ sentiment)
# sample output:
word anger anticipation disgust fear joy negative positive
1 abacus <NA> <NA> <NA> <NA> <NA> <NA> <NA>
2 abandon <NA> <NA> <NA> fear <NA> negative <NA>
3 abandoned anger <NA> <NA> fear <NA> negative <NA>
4 abandonment anger <NA> <NA> fear <NA> negative <NA>
我想把它变成原来的样子:
word sentiment
<chr> <chr>
1 abacus trust
2 abandon fear
3 abandon negative
4 abandon sadness
我尝试了很多收集和熔化选项,但这不是键值格式。
正常的tidyr::gather
操作应该可以,除非你需要1)用na.rm = TRUE
删除NA; 2)在重塑时排除 word
列,使其保留; 3) 在:
之后删除键列
library(tidyverse)
nrc_wide %>%
gather(key, sentiment, -word, na.rm = T) %>%
select(-key) %>%
arrange(word) %>%
head
# word sentiment
#1 abacus trust
#2 abandon fear
#3 abandon negative
#4 abandon sadness
#5 abandoned anger
#6 abandoned fear
使用data.table::melt
:
library(data.table)
melt(setDT(nrc_wide), id.vars = "word", na.rm = TRUE)[,
.(word, sentiment = value)
][order(word)]
# word sentiment
# 1: abacus trust
# 2: abandon fear
# 3: abandon negative
# 4: abandon sadness
# 5: abandoned anger
# ---
#13897: zest anticipation
#13898: zest joy
#13899: zest positive
#13900: zest trust
#13901: zip negative
我想要 gather/melt 一个没有键值最终输出的数据框。所有值都应在一列中结束。
library(tidyverse)
library(tidytext)
data <- get_sentiments("nrc")
我处理的数据如下所示: nrc_wide <- dcast(nrc, word ~ sentiment)
# sample output:
word anger anticipation disgust fear joy negative positive
1 abacus <NA> <NA> <NA> <NA> <NA> <NA> <NA>
2 abandon <NA> <NA> <NA> fear <NA> negative <NA>
3 abandoned anger <NA> <NA> fear <NA> negative <NA>
4 abandonment anger <NA> <NA> fear <NA> negative <NA>
我想把它变成原来的样子:
word sentiment
<chr> <chr>
1 abacus trust
2 abandon fear
3 abandon negative
4 abandon sadness
我尝试了很多收集和熔化选项,但这不是键值格式。
正常的tidyr::gather
操作应该可以,除非你需要1)用na.rm = TRUE
删除NA; 2)在重塑时排除 word
列,使其保留; 3) 在:
library(tidyverse)
nrc_wide %>%
gather(key, sentiment, -word, na.rm = T) %>%
select(-key) %>%
arrange(word) %>%
head
# word sentiment
#1 abacus trust
#2 abandon fear
#3 abandon negative
#4 abandon sadness
#5 abandoned anger
#6 abandoned fear
使用data.table::melt
:
library(data.table)
melt(setDT(nrc_wide), id.vars = "word", na.rm = TRUE)[,
.(word, sentiment = value)
][order(word)]
# word sentiment
# 1: abacus trust
# 2: abandon fear
# 3: abandon negative
# 4: abandon sadness
# 5: abandoned anger
# ---
#13897: zest anticipation
#13898: zest joy
#13899: zest positive
#13900: zest trust
#13901: zip negative