我遇到了一个可能很简单的问题 - 如何对连续的重复行进行求和并删除除第一行之外的所有行.并且,如果存在NA两个重复项之间(例如2,na,2),也可以将它们相加并删除除第一个条目之外的所有副本.到目前为止一切顺利,这是我的样本数据
ia<-c(1,1,2,NA,2,1,1,1,1,2,1,2)
time<-c(4.5,2.4,3.6,1.5,1.2,4.9,6.4,4.4, 4.7, 7.3,2.3, 4.3)
a<-as.data.frame(cbind(ia, time))
Run Code Online (Sandbox Code Playgroud)
样本输出
a
ia time
1 1 4.5
2 1 2.4
3 2 3.6
4 NA 1.5
5 2 1.2
6 1 4.9
7 1 6.4
8 1 4.4
9 1 4.7
10 2 7.3
11 1 2.3
12 2 4.3
Run Code Online (Sandbox Code Playgroud)
现在我想1.)对连续ia的"时间"列求和 - 即,如果数字1在彼此之后出现两次或更多次,则将时间相加,在我的情况下,这里将第一列和第二列的时间加到4.5+2.4.
2.)如果NA两个数字(ia列)之间存在相同的数字(i.e., ia = 2, NA, 2),那么也将所有这些时间相加.
3.)仅保留第一次出现ia,并删除其余部分.
最后,我希望得到这样的东西:
a
ia time
1 1 6.9
3 …Run Code Online (Sandbox Code Playgroud) 我是MATLAB的新手并尝试在循环中运行循环.ID例如,我事先定义了一个变量ID={'100'}.在我的循环中,然后我想转到ID的目录,然后在那里加载matfile.但是,每当我加载matfile时,突然ID定义会被所有可能的ID(目录中ID 100所有的所有文件夹)覆盖.这是我的代码 - 我也试过fullfile,但到目前为止没有运气:
ID={'100'}
for subno=1:length(ID) % first loop
try
for sessno=1:length(Session) % second loop, for each ID there are two sessions
subj_name = ([ID{subno} '_' Session{sessno} '_vectors_SC.mat']);
cd(['C:\' ID{subno} '\' Session{sessno}]);
load(subj_vec_name) % the problem occurs here, when loading, not before
end
end
end
Run Code Online (Sandbox Code Playgroud)
然后,当我检查ID的长度时,它现在不是1(一个ID,即100),但是目录中的所有可能ID都是100,并且循环再次针对所有其他可能的ID进行迭代(尽管它应该在ID 100之后停止).