【发布时间】:2026-02-25 03:10:01
【问题描述】:
以下是数据框:
GENDER PROMOTE
M 1
M 0
M 2
F 1
M 0
F 2
F 1
F 1
M 2
F 0
F 2
F 1
M=男性; F=女
现在我必须找出女性的数量
(a) 推广==0 ; (b) 推广==1; (c) 推广==2
我的尝试:
data <- read.table("sum.txt",header=TRUE)
data
s1=0;s2=0;s3=0
for(i in 1:12){
if(data$GENDER[i]==F & data$PROMOTE[i]==0){
s1=s1+1
} else if (data$GENDER[i]==F & data$PROMOTE[i]==1){
s2=s2+1
} else if (data$GENDER[i]==F & data$PROMOTE[i]==2){
s3=s3+1
}}
但是 s1,s2,s3 没有被修改。那些有它们的初始值。也没有发生错误。
这里有什么问题?以及计算任务的替代方法。
【问题讨论】:
-
F与"F"不同,你也想要&&而不是&。但是有更好的工具可以解决 R 中的问题。请通过提供dput(data)使您的示例可重现 -
正如 baptiste 提到的,看看
?table:table(data$GENDER, data$PROMOTE)。我还建议您花几分钟时间阅读网络上的一些 R 指南介绍,它们会提供很多信息! -
或者干脆
table(data)。 -
更具体地说是
with(subset(data,GENDER=="F"),table(PROMOTE)) -
您可以在R中找到数据管理的基本功能here
标签: r loops for-loop if-statement