通常,特别是在Stack Overflow上提问时,我想创建一个带有虚拟值的数据表.但是,我不确定如何创建一个空的数据表或具有虚拟值的数据表.我该怎么做呢?
我试图从一个短语列表中创建一个词云,其中许多是重复的,而不是单个词.我的数据看起来像这样,我的数据框的一列是短语列表.
df$names <- c("John", "John", "Joseph A", "Mary A", "Mary A", "Paul H C", "Paul H C")
Run Code Online (Sandbox Code Playgroud)
我想制作一个词云,其中所有这些名称都被视为显示频率的单个短语,而不是构成它们的单词.我一直在使用的代码如下:
df.corpus <- Corpus(DataframeSource(data.frame(df$names)))
df.corpus <- tm_map(client.corpus, function(x) removeWords(x, stopwords("english")))
#turning that corpus into a tDM
tdm <- TermDocumentMatrix(df.corpus)
m <- as.matrix(tdm)
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
pal <- brewer.pal(9, "BuGn")
pal <- pal[-(1:2)]
#making a worcloud
png("wordcloud.png", width=1280,height=800)
wordcloud(d$word,d$freq, scale=c(8,.3),min.freq=2,max.words=100, random.order=T, rot.per=.15, colors="black", vfont=c("sans serif","plain"))
dev.off()
Run Code Online (Sandbox Code Playgroud)
这会创建一个单词云,但它是每个组成单词,而不是短语.所以,我看到"A"的相对频率."H","John"等而不是"Joseph A","Mary A"等的相对频率,这就是我想要的.
我确信修复并不复杂,但我无法理解!我将不胜感激任何帮助.
我试图将从API中提取的JSON转换为R中的数据帧,以便我可以使用和分析数据.
#Install needed packages
require(RJSONIO)
require(httr)
#request a list of companies currently fundraising using httr
r <- GET("https://api.angel.co/1/startups?filter=raising")
#convert to text object using httr
raise <- content(r, as="text")
#convert to list using RJSONIO
fromJSON(raise) -> new
Run Code Online (Sandbox Code Playgroud)
一旦我得到这个对象,new我就很难将列表解析成数据帧.json有这样的结构:
{
"startups": [
{
"id": 6702,
"name": "AngelList",
"quality": 10,
"...": "...",
"fundraising": {
"round_opened_at": "2013-07-30",
"raising_amount": 1000000,
"pre_money_valuation": 2000000,
"discount": null,
"equity_basis": "equity",
"updated_at": "2013-07-30T08:14:40Z",
"raised_amount": 0.0
}
}
],
"total": 4268 ,
"per_page": 50,
"page": 1,
"last_page": …Run Code Online (Sandbox Code Playgroud) 我正在尝试确定两次观察之间的时间差。数据由不同的人分解,每个人都有自己的唯一ID。我有一个数据集,它告诉我每次更改时它们的状态都会更新,以及何时更改它们的状态。状态可以是两个值之一,并且它始终会更改为不是它的值(在这种情况下,从Y到N,或从N到Y)。
数据如下所示:
ID Status Time
1 Y 2013-07-01 08:07:00
2 Y 2013-07-01 08:07:03
3 Y 2013-07-01 08:07:04
4 Y 2013-07-01 08:07:06
1 N 2013-07-01 08:07:07
2 N 2013-07-01 08:07:23
5 Y 2013-07-01 08:07:34
6 Y 2013-07-01 08:07:45
7 Y 2013-07-01 08:07:47
1 Y 2013-07-01 08:07:56
3 N 2013-07-01 08:07:58
Run Code Online (Sandbox Code Playgroud)
我想找到的是每个ID每次状态更改之间经过的时间,即从Y到N花费多长时间。然后获得摘要统计信息,例如经过时间的分布,均值时间的流逝等
因此,示例输出可能看起来像这样,记录了上面发生的三个Y到N开关(1个开关,2个开关和3个开关)
Y to N change Time elapsed (in seconds)
1 7
2 20
3 54
Run Code Online (Sandbox Code Playgroud)
由于某种原因,我对此有很多麻烦。现在,我将时间设置为POSIXlt格式,并将ID和状态作为一个因素。我尝试使用ddply按ID然后按时间戳对数据进行排序,但是到目前为止还没有奏效。任何建议将不胜感激!
编辑:将时间更改为实际上是正确的类型。
Edit2:最终在等待更多答案的同时编写了解决方案。我的方法比这里的许多解决方案都要难看,但我做到了:
N <- ifelse(df$Status=="N",1,0)
Y <- ifelse(df$Status== "Y",1,0)
#making a vector which is …Run Code Online (Sandbox Code Playgroud) 我试图使用查找表一次更改多个列的值。它们都使用相同的查找表。我知道如何仅对一列执行此操作-我只会使用merge,但是在处理多列时遇到了麻烦。
以下是示例数据帧和示例查找表。我的实际数据要大得多(约8列10K列)。
example <- data.frame(a = seq(1,5), b = seq(5,1), c=c(1,4,3,2,5))
lookup <- data.frame(number = seq(1,5), letter = LETTERS[seq(1,5)])
理想情况下,我将得到一个如下所示的数据框:
example_of_ideal_output <- data.frame(a = LETTERS[seq(1,5)], b = LETTERS[seq(5,1)], c=LETTERS[c(1,4,3,2,5)])
当然,在我的实际数据中,数据帧是数字,但是查找表要复杂得多,所以我不能只使用喜欢LETTERS解决问题的功能。
先感谢您!
我试图找到由变量/键y定义的每个组的一个变量x的唯一值的出现次数。
我一直在使用以下代码:
DT[,length(unique(x)),by=y] -> x_count_per_y
Run Code Online (Sandbox Code Playgroud)
这可行,但是有点慢。有没有一种方法可以针对data.table对此进行优化,还是我应该期望的最快?
如果标题不能准确描述我正在做的事,请道歉.
我正在努力为幻想体育比赛建立每一个可能的假设团队.这意味着将所有可用的球员组合在一起,每个球员都有自己所在球队的特征,他们的位置和工资,这限制了一支球队的人数.我遇到的麻烦是找到一种内存有效的方法将它们全部组合起来.
我做了一个示例数据集:
player_pool <- data.frame(id = seq(1,30), salary = seq(1,30), team = rep(LETTERS[seq(from=1, to=5)],6), position = rep(LETTERS[seq(from=1, to=5)],6))
Run Code Online (Sandbox Code Playgroud)
在这30名球员中,我想选择每支球队8人,其中至少有1名来自5个角色的球员,不超过3名来自同一球队的球员,总薪水不超过50.
例如,这将是一个有效的团队:
id salary team position
1 1 A A
2 2 B B
3 3 C C
4 4 D D
5 5 E E
6 6 A A
7 7 B B
8 8 C C
Run Code Online (Sandbox Code Playgroud)
每支球队不超过两名球员,每名球员至少1名,总薪水为36名.
我一直在尝试使用包来逐步实现所有~6MM组合的公式iterpc,查找并计算每一步的薪水/团队编号.这让我可以在每一步都将所有内容都安装到内存中,但速度非常慢且效率低下 - 这相当于创建了每个可能的团队并连续应用规则.
任何替代方法都会很棒!
我很难从字符串中提取日期.该字符串可以看作多种方式之一,但总是包含以下形式:
<full month name> <numeric date>, <year>
Run Code Online (Sandbox Code Playgroud)
如:
DECEMBER 4, 2011
Run Code Online (Sandbox Code Playgroud)
但是,字符串开头的文本范围很广,采用所有这些形式:
THE PUBLIC SCHEDULE FOR MAYOR RAHM EMANUEL JUNE 9, 2011
THE PUBLIC SCHEDULE FOR MAYOR RAHM EMANUEL FOR OCTOBER 29 & OCTOBER 30, 2011
The Public Schedule for Mayor Rahm Emanuel December 17, 2011 through January 2, 2012
The Public Schedule for Mayor Rahm Emanuel December 8th and 9th, 2012
The Public Schedule for Mayor Rahm Emanuel – March 13, 2013
Run Code Online (Sandbox Code Playgroud)
这些变化真的让我失望.通常情况下,我只是删除字符串的前X个字符,并使用余数作为我的日期,但由于格式不断变化,这是不可能的.我一直试图改变这种情况,但我最终创造了同样多的问题.
这似乎grep()可能是在这里使用的函数,但我真的不明白我如何创建一个模式来捕获这些日期,或如何使用它的输出.
感谢您的任何帮助!
r ×8
data.table ×2
combinations ×1
date ×1
datetime ×1
grep ×1
httr ×1
jsonlite ×1
lookup ×1
merge ×1
optimization ×1
simulation ×1
string ×1
word-cloud ×1