我遇到了一个需要合并两个数据框的项目.他们看起来像这样:
Data1
Traffic Source Registrations Hour Minute
organic 1 6 13
social 1 8 54
Data2
Email Hour2 Minute2
test@domain.com 6 13
test2@domain2.com 8 55
Run Code Online (Sandbox Code Playgroud)
我有以下代码行来合并2个数据帧:
merge.df <- merge(Data1, Data2, by.x = c( "Hour", "Minute"),
by.y = c( "Hour2", "Minute2"))
Run Code Online (Sandbox Code Playgroud)
如果两个数据集之间的可变时间(小时和分钟)没有略微偏离,那将会很有效.有没有办法让列"分钟"与"Minute2"匹配,如果它是+或 - 一分钟关闭?
我以为我可以为数据集1创建2个新列:
Data1
Traffic Source Registrations Hour Minute Minute_plus1 Minute_minus1
organic 1 6 13 14 12
social 1 8 54 55 53
Run Code Online (Sandbox Code Playgroud)
如果"Minute2"匹配"Minute","Minute_plus1"或"Minute_minus1"中的任何变量,是否可以合并2个数据帧?或者是否有更有效的方法来完成此合并?
我的数据集有一个响应变量和一个二级因子解释变量。是否有一个函数可以创建没有 x 轴变量的散点图?我希望变量沿 x 轴随机分布,以便更容易查看并按颜色区分 2 个组。我可以通过创建“ID”变量来创建绘图,但我想知道是否可以在没有它的情况下完成此操作?+ facet_grid(. ~ other.var)
当我尝试添加以查看由另一个因子变量分解的同一图时,“ID”变量引起了问题。
#Create dummy data set
response <- runif(500)
group <- c(rep('group1',250), rep('group2',250))
ID <- c(seq(from=1, to=499, by=2), seq(from=2, to=500, by=2))
data <- data.frame(ID, group, response)
#plot results
ggplot() +
geom_point(data=data, aes(x=ID, y=response, color=group))
Run Code Online (Sandbox Code Playgroud)
我已经预处理了文本数据到语料库中我现在想要建立一个基于前两个单词的预测模型(所以我认为3克模型?).基于我对我读过的文章的理解,以下是我在考虑如何做到这一点:
第1步:输入两个单词短语我们希望预测下一个单词
# phrase our word prediction will be based on
phrase <- "I love"
Run Code Online (Sandbox Code Playgroud)
第2步:计算3克频率
library(RWeka)
threegramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min=3, max=3))
dtm_threegram <- DocumentTermMatrix(corpus, control=list(tokenize=threegramTokenizer))
threegram_freq <- sort(colSums(as.matrix(dtm_threegram)), decreasing = TRUE)
Run Code Online (Sandbox Code Playgroud)
下一步是我遇到困难的地方.从概念上讲,我认为我应该将我的3-gram子集化为仅包括以"我喜欢"开头的三个单词组合.然后,我应该保持最高频率3克.例如,如果"我爱你"在我的语料库中出现12次并且"我爱啤酒"出现了15次,那么"啤酒"作为下一个单词的概率高于"爱",因此该模型应该返回前者.这是正确的方法,如果是这样,我如何以编程方式创建这样的东西?我的threegram_freq
对象似乎是带有字符属性的数字类,我不完全理解它是什么.是否可以使用正则表达式仅包含以"我爱"开头的元素,然后以最高频率提取3-gram的第3个单词?
谢谢!