小编SMM*_*SMM的帖子

ddply在R中拆分大量类别的问题

最近,我问一个关于计数的时间元素进行了反复数本身的问题(http://stackoverflow.com/questions/7669553/how-to-assign-number-of-repeats-to-dataframe-based-on-elements -of-an-identification/7669607#7669607)在一个大型数据框架中.我收到了一些非常有用的建议,这些建议适用于少量行,但现在需要在更大的级别上执行操作(超过255k行,使用ddply形成大约100k"组"):

system.time( data <- ddply(data, "uid", function(x) {x$time <- 1:nrow(x); x}) ) #uid is the grouping variable, for which I need to count the number of repeats for output like

uid    time
ny1    1
ny1    2
ny2    1
ny2    2
ny2    3
Run Code Online (Sandbox Code Playgroud)

尝试在较大的数据集上执行此操作会导致由于内存问题导致的R窒息.这有什么明显的解决方案吗?在此先感谢(特别是耐心,因为我是一个新的"程序员").

r transform large-data plyr

3
推荐指数
1
解决办法
463
查看次数

通过将两个整数变量与MySQL连接来生成新的字符串变量

我为这个问题的愚蠢而道歉,但我是MySQL的一个完全新手,我甚至无法阅读这个文档.我有一个包含两列"homeid"和"indid"的表,它们都是整数数据字段.我想在一个带有连字符的新变量"uid"中将它们连接在一起.期望的输出将如下所示:

uid   homeid   indid
10-1  10       1
10-2  10       2
11-1  11       1
Run Code Online (Sandbox Code Playgroud)

我已经尝试了下面的代码,通过生成变量"uid"可以很好地执行连接变量,但似乎不起作用(虽然不会产生错误):

ALTER TABLE table_name
add column uid varchar(10) FIRST; /*adds column uid to table "table_name" as first column*/

UPDATE table_name
SET uid=CONCAT('-' , homeid, indid);
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助(和耐心).

mysql concatenation concat-ws

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

跨列的条件总和

我想在R中生成一个新变量,它创建一个其他列满足标准的次数之和,我需要一个可以处理NA的函数,例如,

x <- seq(10,20); y <- seq(12,22); y[4] <- NA; z <- seq(14,24); z[c(4,5)] <- NA
data <- cbind(x,y,z)
Run Code Online (Sandbox Code Playgroud)

我想要的是一个变量"less16",它总结了每个记录/行在x,y,z列之间的值<16的次数:

x   y   z   less16
10  12  14  3
11  13  15  3
12  14  16  2
13  NA  NA  1
14  16  NA  1
etc
Run Code Online (Sandbox Code Playgroud)

我已经尝试了rowSum(),sum(),which(),for循环使用if和else if,到目前为止都无济于事.任何建议将不胜感激.提前致谢.

r sum

3
推荐指数
2
解决办法
7634
查看次数

R:生成变量名,评估函数列表中的函数,并将这些值分配给循环中生成的变量名

如果已有答案,请原谅我,但我无法从档案中找到答案.

我通过R中的for循环生成了一个非常相似的函数列表:

adoptint.fun=list()
    for(i in 1:40) {
    #function name for each column
    func.name <- paste('adoptint',i,sep='')
    #function
    func = paste('function(yearenter, adoptyear, yearleave) {ifelse(is.na(yearenter) | yearenter >', i+1905, ' | is.na(adoptyear) | yearleave > ', i+1905, ', NA, ifelse(yearenter <= ', i+1905, ' & adoptyear <= ', i+1905, ', 1, 0))}', sep='')
    adoptint.fun[[func.name]] = eval(parse(text=func))
}
Run Code Online (Sandbox Code Playgroud)

我现在有兴趣应用此函数为尚未在数据框中创建的变量生成值.我想使用循环或类似方法来做这个,因为过程是相同的,尽管特定值在40次迭代中发生变化.代码看起来像:

#generate variables that will be inserted into dataframe, dfanal.reshape
var_names <- paste("dfanal.reshape$adopt", 1:40, sep="")

#run function i to obtain values for variable i, which should …
Run Code Online (Sandbox Code Playgroud)

loops for-loop r variable-names dataframe

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