小编roo*_*ody的帖子

通过唯一标识符进行聚合并将相关值连接到字符串中

我有一个需要,我想可以满足aggregatereshape,但我不能完全弄明白.

我有一个名单(brand)列表和随附的ID号(id).这些数据是长形式的,因此名称可以有多个ID.我想通过名称(brand)去重复,并将多个可能id的连接到由注释分隔的字符串中.

例如:

brand            id 
RadioShack       2308
Rag & Bone       4466
Ragu             1830
Ragu             4518
Ralph Lauren     1638
Ralph Lauren     2719
Ralph Lauren     2720
Ralph Lauren     2721
Ralph Lauren     2722 
Run Code Online (Sandbox Code Playgroud)

应成为:

RadioShack       2308
Rag & Bone       4466
Ragu             1830,4518
Ralph Lauren     1638,2719,2720,2721,2722
Run Code Online (Sandbox Code Playgroud)

我怎么做到这一点?

aggregate r concatenation

51
推荐指数
4
解决办法
4万
查看次数

超出R的内存限制(即使使用24GB RAM)

我试图合并两个数据帧:一个有33个变量的908450个观测值,另一个有2个变量的908450个观测值.

dataframe2 <-merge(dataframe1, dataframe2, by="id")
Run Code Online (Sandbox Code Playgroud)

我已经清除了工作内存中的所有其他数据帧,并使用以下代码重置了我的内存限制(对于具有24 GB RAM的全新桌面):

memory.limit(24576)
Run Code Online (Sandbox Code Playgroud)

但是,我仍然得到错误Cannot allocate vector of size 173.Mb.

有关如何解决这个问题的任何想法?

memory memory-management r dataframe

18
推荐指数
1
解决办法
4110
查看次数

绘制因子变量的直方图

我正在尝试复制类似于以下的图表(最初在这里找到)
堆积直方图

它在概念上很简单,但我对如何在R中做到这一点感到有点难过.
总结一下:我想在每天的24小时内生成行为频率的直方图(24级因子变量).周.然后,我想将这些直方图叠加在一起,以便可以轻松地比较一天中一小时的行为分布(再次参见示例).

例如,我的数据可能如下所示:

  weekday hour    count
  Tuesday   15      553
   Monday    1       53
   Monday   10      539
   Monday   15      629
  Tuesday    9      281
 Saturday    4       11
   Monday    3       20
   Sunday    3       10
   Sunday    7        2
   Sunday    2       17
Run Code Online (Sandbox Code Playgroud)

如何在上面的链接中实现图表?我很糟糕ggplot,但感觉这是可能的解决方案.谢谢!

r ggplot2

17
推荐指数
1
解决办法
2万
查看次数

使用stringdist对变量上的数据进行分区以加速"模糊匹配"

我正在建立一个关于模糊匹配的前一个问题的答案stringdist.

我有两个带有长字符串(消费品名称)的大型数据集(~30k行),我希望通过生成距离分数来模糊匹配.两个产品名称列表中存在一些预期的重叠,但某些产品对于每个列表都是唯一的.

问题在于:我的计算机正在努力用如此多的数据扩展网格,并且R不断崩溃.但是,我有一个可能有助于优化的想法 - 我无法让它发挥作用.

我的大多数字符串可以分时段到基于品牌(如数据子集pantene,neutrogena等等).而不是计算所有字符串组合之间的距离,我想grep为品牌名称,数据子集,然后计算距离.

首先,我使用与前一篇文章相同的功能.

# Function by @C8H10N4O2    
greedyAssign <- function(a,b,d){
      x <- numeric(length(a)) # assgn variable: 0 for unassigned but assignable, 
      # 1 for already assigned, -1 for unassigned and unassignable
      while(any(x==0)){
        min_d <- min(d[x==0]) # identify closest pair, arbitrarily selecting 1st if multiple pairs
        a_sel <- a[d==min_d & x==0][1] 
        b_sel <- b[d==min_d & a == a_sel & x==0][1] 
        x[a==a_sel & b == b_sel] <- 1 …
Run Code Online (Sandbox Code Playgroud)

optimization r fuzzy-comparison

13
推荐指数
1
解决办法
362
查看次数

如何在纵向数据集中进行winsorize(或删除单变量异常值)

我试图弄清楚如何在纵向数据集中对个体分组的观测进行组合.

我从这个优秀的答案开始,关于如何从变量的平均值中删除数据> 2个标准偏差.作者还有助于展示如何在类别中执行此操作.

我的用例略有不同:我有一个纵向数据集,我希望删除随着时间的推移,系统地显示为异常值的个体.我想要完全排除那些个体(修剪数据)或者用切割值替换底部和顶部2.5%(参见:http://en.wikipedia. org/wiki/Winsorising).

例如,我的长格式数据可能如下所示:

name time points
MJ   1    998
MJ   2    1000
MJ   3    998
MJ   4    3000
MJ   5    998
MJ   5    420
MJ   6    999
MJ   7    998
Lebron   1    9
Lebron   2    1
Lebron   3    3
Lebron   4    900
Lebron   5    4
Lebron   5    4
Lebron   6    3
Lebron   7    8
Kobe   1    2
Kobe   2    1
Kobe   3    4
Kobe   4    2
Kobe   5    1000
Kobe   5    4
Kobe …
Run Code Online (Sandbox Code Playgroud)

r

12
推荐指数
1
解决办法
3565
查看次数

使用tm()从R中的语料库中删除非英语文本

我在R中使用tm()wordcloud()进行一些基本的数据挖掘,但由于我的数据集中有非英文字符(即使我试图根据背景变量过滤掉其他语言),我遇到了困难.

假设我的TXT文件中的一些行(在TextWrangler中保存为UTF-8)如下所示:

Special
satisfação
Happy
Sad
Potential für
Run Code Online (Sandbox Code Playgroud)

然后我将我的txt文件读入R:

words <- Corpus(DirSource("~/temp", encoding = "UTF-8"),readerControl = list(language = "lat"))
Run Code Online (Sandbox Code Playgroud)

这会产生警告消息:

Warning message:
In readLines(y, encoding = x$Encoding) :
  incomplete final line found on '/temp/file.txt'
Run Code Online (Sandbox Code Playgroud)

但由于这是一个警告,而不是错误,我继续向前推进.

words <- tm_map(words, stripWhitespace)
words <- tm_map(words, tolower)
Run Code Online (Sandbox Code Playgroud)

然后产生错误:

Error in FUN(X[[1L]], ...) : invalid input 'satisfa??o' in 'utf8towcs'
Run Code Online (Sandbox Code Playgroud)

我愿意找到在TextWrangler或R中过滤掉非英文字符的方法; 无论什么是最权宜之计.谢谢你的帮助!

r tm

10
推荐指数
1
解决办法
2万
查看次数

从互斥的虚拟变量创建分类变量

我的问题是关于先前回答的关于将多个虚拟变量组合成单个分类变量的问题的详细说明.

在之前提出的问题中,分类变量是从非互斥的虚拟变量创建的.对于我的情况,我的虚拟变量是相互排斥的,因为它们代表了2X2主体间因子设计中的交叉实验条件(也有一个内部主题组件,我在这里没有解决),所以我不认为我做了interaction什么需要做.

例如,我的数据可能如下所示:

id   conditionA    conditionB    conditionC     conditionD
1    NA            1             NA             NA
2    1             NA            NA             NA
3    NA            NA            1              NA
4    NA            NA            NA             1
5    NA            2             NA             NA
6    2             NA            NA             NA
7    NA            NA            2              NA
8    NA            NA            NA             2
Run Code Online (Sandbox Code Playgroud)

我现在想制作结合ACROSS不同类型条件的分类变量.例如,具有条件A和B的值的人可能使用一个分类变量编码,并且具有条件C和D的值的人.

id   conditionA    conditionB    conditionC     conditionD  factor1    factor2
1    NA            1             NA             NA          1          NA
2    1             NA            NA             NA          1          NA
3    NA            NA            1              NA          NA …
Run Code Online (Sandbox Code Playgroud)

r categorical-data dummy-variable

9
推荐指数
1
解决办法
4553
查看次数

使用`car`重新编码列范围

我一直在互联网上讨论,并且无法弄清楚如何应用car一系列列的重新编码值.

要重新编码单个列的值,我将运行如下命令:

 df$dv_r <- recode(df$dv, "2=1;1=0;0=NA")
Run Code Online (Sandbox Code Playgroud)

然后,如果我想为整个data.frame执行此操作,我可以运行:

 df_2 <- lapply(df, FUN = function(x) recode(x, "2=1;1=0;0=NA"))
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何为一系列列执行此操作 - 例如,在假设的data.table调用中df,如何重新编码列的值20:40

谢谢!当然这对R专家来说非常容易.

r dataframe data.table

7
推荐指数
1
解决办法
5725
查看次数

在R中聚合超过80K的唯一ID

关于大数据的另一个新手问题.我正在使用带有时间序列数据的大型数据集(3.5米行).我想创建一个data.table列,找到第一次出现唯一标识符的列.

df是a data.table, df$timestamp是类中的日期POSIXct,df$id是唯一的数字标识符.我正在使用以下代码:

# UPDATED - DATA KEYED
setkey(df, id)
sub_df<-df[,(min(timestamp)), by=list(id)] # Finding first timestamp for each unique ID
Run Code Online (Sandbox Code Playgroud)

这是捕获.我正在聚合超过80k的唯一ID.R很窒息.我能做些什么来优化我的方法?

r data.table

6
推荐指数
2
解决办法
1132
查看次数

当列名等于行值时,组合两个数据帧来计算变量

我有两个数据帧:一个数据帧具有表示是否存在字符串匹配的二分变量,另一个数据帧在不同维度上为该字符串应用"权重".

例如,df1可能看起来像这样:

organic    gluten_free    kosher   sugar_free
1          0              0        0
1          1              0        1
1          1              0        1
0          0              1        0
1          0              1        0
Run Code Online (Sandbox Code Playgroud)

行值的第二数据帧(df2)应匹配的值的列名df1,并与表示重量每行中的值.

attribute    eco-friendly     healthy 
organic      2                3         
gluten_free  1                4         
kosher       3                3         
sugar_free   2                3         
Run Code Online (Sandbox Code Playgroud)

然后,我想计算df1colnamein df1等于行值为df2单独索引时每行值的权重乘积.为清楚起见,我已经包含了eco-friendly以下索引的具体计算:

organic    gluten_free    kosher   sugar-free  eco-friendly
1          0              0        0           (1*2 + 0*1 + 0*3 + 0*2)
1 …
Run Code Online (Sandbox Code Playgroud)

r

5
推荐指数
1
解决办法
75
查看次数