我有一个需要,我想可以满足aggregate或reshape,但我不能完全弄明白.
我有一个名单(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)
我怎么做到这一点?
我试图合并两个数据帧:一个有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.
有关如何解决这个问题的任何想法?
我正在尝试复制类似于以下的图表(最初在这里找到)

它在概念上很简单,但我对如何在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,但感觉这是可能的解决方案.谢谢!
我正在建立一个关于模糊匹配的前一个问题的答案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) 我试图弄清楚如何在纵向数据集中对个体分组的观测进行组合.
我从这个优秀的答案开始,关于如何从变量的平均值中删除数据> 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中使用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中过滤掉非英文字符的方法; 无论什么是最权宜之计.谢谢你的帮助!
我的问题是关于先前回答的关于将多个虚拟变量组合成单个分类变量的问题的详细说明.
在之前提出的问题中,分类变量是从非互斥的虚拟变量创建的.对于我的情况,我的虚拟变量是相互排斥的,因为它们代表了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) 我一直在互联网上讨论,并且无法弄清楚如何应用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专家来说非常容易.
关于大数据的另一个新手问题.我正在使用带有时间序列数据的大型数据集(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很窒息.我能做些什么来优化我的方法?
我有两个数据帧:一个数据帧具有表示是否存在字符串匹配的二分变量,另一个数据帧在不同维度上为该字符串应用"权重".
例如,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)
然后,我想计算df1当colnamein 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)