我有一个数据集,其中包含以下信息:
Subject Value1 Value2 Value3 UniqueNumber
001 1 0 1 3
002 0 1 1 2
003 1 1 1 1
如果UniqueNumber的值大于0,我想使用dplyr为每个受试者从第1行到UniqueNumber的值求和并计算平均值。因此,对于Subject 001来说,sum = 2,mean = .67。total = 0;
average = 0;
for(i in 1:length(Data$Subject)){
for(j in 1:ncols(Data)){
if(Data$UniqueNumber[i] > 0){
total[i] = sum(Data[i,1:j])
average[i] = mean(Data[i,1:j])
}
}
编辑:我只想对“UniqueNumber”列中列出的列进行求和。因此,这将循环遍历每一行,并在列“UniqueNumber”中列出的列处停止。 例如:主题为002的第2行应该总结列'Value1'和'Value2'中的值,而主题为003的第3行应该只总结列'Value1'中的值。
df %>% mutate(sum = ifelse(UniqueNumber > 0, rowSums(.[, 2:(length(.)-1)]), NA), mean = ifelse(UniqueNumber > 0, rowMeans(.[, 2:(length(.)-1)]), NA))
。 - tmfmnk