【发布时间】:2015-09-12 16:02:10
【问题描述】:
我在 rbind.fill'ing 多个数据帧同时对它们进行子集化时遇到问题。我的一般数据框是 1x(6000->60,000),其中单行是给定的纪念馆(林肯纪念堂),列是 Yelp 和 Trip Advisor 上每条评论中的每个单词对,数字是多少出现单词对的次数。
我想将其减少到词对的前 10%,同时又不会失去其中一个中的后 90% 是另一个词对中前 10% 的机会。
four_score = c(60)
seven_years = c(100)
dataframe1 <- data.frame(four_score,seven_years)
seven_years = c(10)
our_fathers = c(40)
dataframe2 <- data.frame(seven_years,our_fathers)
four_score = c(100, 10)
our_fathers = c(NA, 40)
goal = (data.frame(four_score,our_fathers))
goal$dfName <- c("Dataframe1", "DataFrame2")
这就是目标,我从每个 DF(four_score=100,our_fathers=40)中提取了最常用的词对(前 10%),但也能够填写four_score=10(这是后 90%)在 DF2 中,但因为它在 DF1 中是前 10%,所以它填充)。
到目前为止,我极其混乱的代码如下:
library(reshape2)
library(dplyr)
library(data.table)
four_score = c(60)
seven_years = c(100)
dataframe1 <- data.frame(four_score,seven_years)
dataframe1 <- data.frame(t(dataframe1))
dataframe1$Words <- row.names(dataframe1)
colnames(dataframe1)[1] <- "Count"
dataframe1 = dataframe1[order(-dataframe1$Count),]
row.names(dataframe1)<- NULL
dfName = "dataframe1"
dataframe1 <-cbind(dataframe1,dfName)
melted_df1 <- melt(dataframe1, id=c("dfName", "Words"), measure="Count", variable.name="test")
seven_years = c(10)
our_fathers = c(40)
dataframe2 <- data.frame(seven_years,our_fathers)
dataframe2 <- data.frame(t(dataframe2))
dataframe2$Words <- row.names(dataframe2)
colnames(dataframe2)[1] <- "Count"
dataframe2 = dataframe2[order(-dataframe2$Count),]
row.names(dataframe2)<- NULL
dfName = "dataframe2"
dataframe2 <-cbind(dataframe2,dfName)
melted_df2 <- melt(dataframe2, id=c("dfName", "Words"), measure="Count", variable.name="test")
merged_melt <- rbind.fill(melted_df1, melted_df2)
merged_melt <- data.table(merged_melt)
so_close <- merged_melt[order(value, decreasing = TRUE), head(.SD, n = ceiling(.N/10)), by = dfName] %>%
dcast.data.table(dfName ~ value)
但是,这并没有解决真正的问题 - 在第二个数据帧中发现 J=10 并将其填充。事后我需要 %in% 的东西吗?
【问题讨论】:
-
对不起,我根本没有得到这个。您的
dataframe1和dataframe2各有 1 行和 2 列。goal有 2 行 2 列。前10%是什么?这是怎么定义的? -
是的,我不知道你想要完成什么。
-
抱歉,我会再编辑一下。试着让它更清楚......这只是一个例子。基本上,我有许多单个纪念馆(一行)的数据框,在所有关于给定纪念馆的在线评论中每两个词组合(参见编辑,“four_score”),# 是这两个词组合的次数出现在所有评论中。