Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Loops_Dataframe - Fatal编程技术网

我想用R中的大数据帧创建一个循环 问题

我想用R中的大数据帧创建一个循环 问题,r,loops,dataframe,R,Loops,Dataframe,我想从df1中的数据创建一个循环,每次获取一个ID值很重要 我不确定用R怎么做 #original dataset id=c(1,1,1,2,2,2,3,3,3) dob=c("11-08","12-04","04-03","10-04","03-07","06-02","12-09","01-01","03-08") count=c(1,6,3,2,5,6,8,6,4) outcome=rep(1:0,length.out=9) df1=data.frame(id,dob,count,outc

我想从
df1
中的数据创建一个循环,每次获取一个ID值很重要

我不确定用R怎么做

#original dataset
id=c(1,1,1,2,2,2,3,3,3)
dob=c("11-08","12-04","04-03","10-04","03-07","06-02","12-09","01-01","03-08")
count=c(1,6,3,2,5,6,8,6,4)
outcome=rep(1:0,length.out=9)
df1=data.frame(id,dob,count,outcome)

#changes for each value this needs to be completed separately for each value
df2<-df1[df1$id==1,]
df2<-df2[,-4]
addition<-df2$count+45
df2<-cbind(df2,addition)

df3<-df1[df1$id==2,]
df3<-df3[,-4]
addition<-df3$count+45
df3<-cbind(df3,addition)

df4<-df1[df1$id==3,]
df4<-df4[,-4]
addition<-df4$count+45
df4<-cbind(df4,addition)

df5<-rbind(df2,df3,df4)
原始数据集 id=c(1,1,1,2,2,3,3) dob=c(“11-08”、“12-04”、“04-03”、“10-04”、“03-07”、“06-02”、“12-09”、“01-01”、“03-08”) 计数=c(1,6,3,2,5,6,8,6,4) 结果=重复(1:0,长度=9) df1=数据帧(id、dob、计数、结果) #每个值的更改需要为每个值分别完成 df2在当前上下文中(可能是一个简化的示例),循环甚至不需要这个,因为我们可以直接将“count”与数字相加

df1$addition <- df1$count + 45

另外,
data.table
语法将是

library(data.table)
setDT(df1)[, addition := count + 45, by = id]
或者干脆

setDT(df1)[, addition := count + 45]

不幸的是,我正在处理此数据集中的时间序列数据,因此需要将其作为循环运行,但我知道您仍然回答了上述问题。编辑:我的意思是感谢您回答这个问题,但我将无法将其用于我的特定任务,因为我的问题中遗漏了大量代码。@Sparky,正如我提到的,它可以是一个groupby操作。@Sparky,我们向您展示了不需要循环。事实上,不需要分组!只需简单的列分配,不需要循环。只需删除第四列并指定新的列:
df$addtion想象一下,如果进一步到示例中,我添加了来自其他数据帧的信息,并根据原始信息修改了大量的时间序列数据,必须使用循环请向回复者和您文章的未来读者显示(而不是告诉)。您忽略了非常相关的细节。抱歉@Parfait我试图保留接近原始流程的适当最小可复制示例,但感谢您回答这个问题。
library(data.table)
setDT(df1)[, addition := count + 45, by = id]
setDT(df1)[, addition := count + 45]