Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 加快应用自定义项,并_R_Performance_Function_Apply - Fatal编程技术网

R 加快应用自定义项,并

R 加快应用自定义项,并,r,performance,function,apply,R,Performance,Function,Apply,我有一些大数据帧需要处理(每个大于100GB)。我需要这样的输出(attraction$attraction): 如果您只有一个~100GB的数据帧,则需要一个具有128GB RAM的系统才能读取该数据帧。你们有这样的系统吗?要在这台计算机上执行任何实际操作,一般的指导原则是至少有2个RAM,所以实际上是256 GB。同时使用两个数据帧意味着超过512GB的RAM。另外:您应该对需要执行的流程和代码进行进一步的解释,因为这可能会吸引更多的关注和帮助。如果这是字面上的“执行左连接”,那么将数据移动

我有一些大数据帧需要处理(每个大于100GB)。我需要这样的输出(
attraction$attraction
):


如果您只有一个~100GB的数据帧,则需要一个具有128GB RAM的系统才能读取该数据帧。你们有这样的系统吗?要在这台计算机上执行任何实际操作,一般的指导原则是至少有2个RAM,所以实际上是256 GB。同时使用两个数据帧意味着超过512GB的RAM。另外:您应该对需要执行的流程和代码进行进一步的解释,因为这可能会吸引更多的关注和帮助。如果这是字面上的“执行左连接”,那么将数据移动到PostgreSQL中&使用postgres dplyr后端让它在RAM之外执行操作。我停止了操作以检查RAM(),但无法使其工作。我很确定,如果可以加快速度的话,我可以通过添加一些额外的步骤来避免在任何时候打开多个数据帧。打开到环境中确实需要很长时间,可能需要5-7个小时:-)可能不清楚,但我想在依从性数据框中的每一行上应用函数.AH,从而得到依从性向量$依从性。或者我误解了“进一步解释”数据帧是矩形数据结构。数据库表是矩形数据结构。R的
dplyr
package(&helpers)可以在数据库和in-R中进行操作。因此操作可以全部在DB端完成。您应该知道您的系统是否有128GB的RAM或更多的RAM,并且还必须停止R ops。该服务器通过VPN访问到国家统计局服务器的一个非常受限的环境,因此我认为我必须停止ops才能通过R studio回答这个问题。不管你提到什么,我认为这可能有助于加速分析。我至少会试试。如果你只有一个100GB的数据帧,你需要一个128GB内存的系统来读取它。你们有这样的系统吗?要在这台计算机上执行任何实际操作,一般的指导原则是至少有2个RAM,所以实际上是256 GB。同时使用两个数据帧意味着超过512GB的RAM。另外:您应该对需要执行的流程和代码进行进一步的解释,因为这可能会吸引更多的关注和帮助。如果这是字面上的“执行左连接”,那么将数据移动到PostgreSQL中&使用postgres dplyr后端让它在RAM之外执行操作。我停止了操作以检查RAM(),但无法使其工作。我很确定,如果可以加快速度的话,我可以通过添加一些额外的步骤来避免在任何时候打开多个数据帧。打开到环境中确实需要很长时间,可能需要5-7个小时:-)可能不清楚,但我想在依从性数据框中的每一行上应用函数.AH,从而得到依从性向量$依从性。或者我误解了“进一步解释”数据帧是矩形数据结构。数据库表是矩形数据结构。R的
dplyr
package(&helpers)可以在数据库和in-R中进行操作。因此操作可以全部在DB端完成。您应该知道您的系统是否有128GB的RAM或更多的RAM,并且还必须停止R ops。该服务器通过VPN访问到国家统计局服务器的一个非常受限的环境,因此我认为我必须停止ops才能通过R studio回答这个问题。不管你提到什么,我认为这可能有助于加速分析。我至少要试试。
 adherence <- cbind.data.frame(c("1", "2", "3", "1", "2", "3"), c("2013.1", "2013.1", "2013.1", "2013.2", "2013.2", "2013.2"))
library(dplyr)
library(tidyr)
names(adherence)[1] <- "ID" 
names(adherence)[2] <- "year"
adherence$year <- as.numeric(as.character(adherence$year))

lsr <- cbind.data.frame(
  c("1", "1", "1", "2", "2", "2", "3", "3"), #ID
  c("2012.3", "2012.8", "2013.1","2012.8", "2013.3", "2013.9", "2011", "2013"), #eksd
  c("60", "90", "90", "60", "120", "60", "30", "90") # DDD
)
names(lsr)[1] <- "ID"
names(lsr)[2] <- "eksd"
names(lsr)[3] <- "DDD"

lsr$eksd <- as.numeric(as.character(lsr$eksd))
lsr$DDD <- as.numeric(as.character(lsr$DDD))
lsr$ENDDATE <- lsr$eksd + lsr$DDD/365.25


adherence <- adherence %>% full_join(lsr, by = 'ID')  %>% mutate(newVariable = ifelse(eksd <= year & year <= ENDDATE, (ENDDATE - year) * 365.25, 0)) %>% 
  group_by(ID, year) %>% summarize(newVariable = sum(newVariable)) 

function.AH <- function(x) {
  A <- subset(lsr, ID == x[1] & eksd <= x[2] & ENDDATE > x[2]) 
  ifelse(nrow(A) == 0, 0, sum(A$ENDDATE-as.numeric(x[2]))*365.25)
   }

adherence$AH <-apply (adherence, 1,  FUN = function.AH)