Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/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_For Loop_Recursion_Dataframe - Fatal编程技术网

R 添加零数据-递归循环?

R 添加零数据-递归循环?,r,for-loop,recursion,dataframe,R,For Loop,Recursion,Dataframe,背景: 我有一个由计数数据组成的数据框,即从数字图像“条形码”中计数的昆虫若虫的数量。 每个条形码应有两个数字/计数“NymphCounts”,两级“状态”活动“a”和死亡“d”各一个数字 问题: 对于state=dead或alive,并不总是输入“zero”计数数据。我想添加缺少的zero数据。 如何检查每个条形码出现两次,如果条形码编号出现一次,则仅复制条形码(观察)和所有其他变量(除了添加零“Nymph count”),但确保“State”变量与原始观察中记录的状态相反 通常,我可以从其他

背景: 我有一个由计数数据组成的数据框,即从数字图像“条形码”中计数的昆虫若虫的数量。 每个条形码应有两个数字/计数“NymphCounts”,两级“状态”活动“a”和死亡“d”各一个数字

问题: 对于state=dead或alive,并不总是输入“zero”计数数据。我想添加缺少的zero数据。 如何检查每个条形码出现两次,如果条形码编号出现一次,则仅复制条形码(观察)和所有其他变量(除了添加零“Nymph count”),但确保“State”变量与原始观察中记录的状态相反

通常,我可以从其他帖子中找到大多数解决方案。虽然很多帖子都很接近,但我似乎无法解决以下问题

样本数据:

dput(sampleData)
structure(list(Barcode = structure(c(1L, 1L, 2L, 2L, 3L, 4L, 
5L, 6L, 7L, 8L, 9L, 9L, 10L, 10L, 11L, 11L), .Label = c("10308", 
"10309", "10310", "10326", "10327", "10328", "10329", "10330", 
"10331", "10332", "10335"), class = "factor"), Trip = c(1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), Source = 
structure(c(1L, 
1L, 2L, 2L, 11L, 3L, 4L, 5L, 6L, 7L, 8L, 8L, 9L, 9L, 10L, 10L
), .Label = c("P8030265.JPG", "P8030266.JPG", "P8040342.JPG", 
"P8040343.JPG", "P8040344.JPG", "P8040345.JPG", "P8040346.JPG", 
"P8040347.JPG", "P8040348.JPG", "P8040349.JPG", "P8040359.JPG"
), class = "factor"), NymphCounts = c(1L, 1L, 1L, 5L, 7L, 2L, 
16L, 1L, 1L, 1L, 4L, 10L, 2L, 1L, 3L, 3L), ND.T = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "N/A", 
class = "factor"), 
ND.Z = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L), .Label = "N/A", class = "factor"), 
ND.M = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L), .Label = "N/A", class = "factor"), 
Phone = structure(c(2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L), .Label = c("M ", "T"), class = "factor"), 
State = structure(c(1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 2L, 1L, 2L, 1L, 2L), .Label = c("a", "d"), class = "factor")), .Names = 
c("Barcode", 
"Trip", "Source", "NymphCounts", "ND.T", "ND.Z", "ND.M", "Phone", 
"State"), row.names = c(NA, -16L), class = "data.frame")
寻找类似的问题,在一些帮助下,我尝试了这个

sampled<-sampleData
str(sampled)
for(i in levels(sampled[,1])){
  if (sum(sampled[,1]==i)==1){
temp <-sampled[which(sampled[,1]==i),]
if(temp$State=="a") temp$State="d"
if(temp$State=="d") temp$State="a"
temp$NymphCounts=0
sampled <- rbind(sampled,temp)
  }
}

write.csv(sampled,"R:/Leo/CWF DATA/sampledcor.csv")
sampledcor<-read.csv("R:/Leo/CWF DATA/sampledcor.csv", header = TRUE, sep = 
",")
但是,如果当前状态为
a
活动,则代码复制条形码添加
计数,但也复制状态,而不是将其更改为
d
不太好

7    7   10327    1 P8040343.JPG          16  N/A  N/A  N/A    M      a
19  71   10327    1 P8040343.JPG           0  N/A  N/A  N/A    M      a
如果您能告诉我如何更正代码,使添加的观察结果得到零计数,同时也得到适当的状态,我将不胜感激。 我还得到了一个额外的列变量“X”,有什么方法可以控制它吗?
提前感谢

在编辑文章时,您可以使用文本框上方的
{}
,以更可读的格式放置数据和代码。只需选择块并单击该图标。当只有一次读取“Narcode”且状态为“d”时,是否要将“NymphCounts”中的值更改为“0”?我不确定我是否理解预期的输出。感谢编辑提示lmoThanks Juan Bosco,我想检查每个条形码(观察)是否出现两次。如果条形码只出现一次,我想复制观察结果,但若虫计数除外,我想用零替换它,并记录与初始状态相反的状态。所以我最终得到了两个相同的条形码观察结果,一个是死亡的若虫数量,另一个是活着的若虫数量。希望这有帮助。
7    7   10327    1 P8040343.JPG          16  N/A  N/A  N/A    M      a
19  71   10327    1 P8040343.JPG           0  N/A  N/A  N/A    M      a