我有以下类型的数据框架:
Gender FSIQ VIQ PIQ Weight Height MRIcount IQindicator
1 Female 133 132 124 118 64.5 816932 1
2 Male 140 150 124 NA 72.5 1001121 1
3 Male 139 123 150 143 73.3 1038437 1
4 Male 133 129 128 172 68.8 965353 1
5 Female 137 132 134 147 65.0 951545 1
6 Female 99 90 110 146 69.0 928799 0我的目标是制作两个向量,一个是MRIcount向量,IQindicator是1,IQindicator是0。
我写了以下几封信:
MRI_low <-c()
MRI_high <- c()
for (index in brain_data[,8]){
if (index = 1){
MRI_high <- append(MRI_high, MRIcount)
} else {
MRI_low <- append(MRI_low, MRIcount)
}
}我怎么才能把这事做好?
对于这个例子,我需要:
MRI_low <-c(928799) MRI_high <-c(816932,1001121,1038437,965353,> 951545)
发布于 2016-10-09 20:10:12
您可以只使用逻辑索引。假设您的数据框架名为df,一个解决方案可能是
MRI_high <- df$MRIcount[df$IQindicator == 1]
MRI_low <- df$MRIcount[df$IQindicator == 0]使用$-操作符,您可以访问/提取数据帧的变量。然后,您将看到括号中的逻辑条件。这使得一个向量包含在所述条件成立的情况下为真,如果它不成立,则为FALSE。如果用逻辑向量索引向量,则将值保持为TRUE。
发布于 2016-10-09 20:07:38
假设您的数据框架名为df,这将起作用:
MRI_low <- subset(df, IQindicator == 0)$MRIcount
MRI_high <- subset(df, IQindicator == 1)$MRIcount有更好的方法来使用一些额外的包来完成它,但是这应该足以满足基本的安装。
https://stackoverflow.com/questions/39947964
复制相似问题