R 使用if语句添加变量
我有一个包含学员姓名的csv文件和一个包含出版物列表的csv文件,其中包括一个定义作者姓名的变量。如果出版物中的作者姓名与学员文件中包含的任何学员姓名PEEP匹配,我希望R向出版物数据框添加一个变量,其中包含一个伪变量。下面的代码对我不起作用,我不知道为什么。我收到的错误是找不到对象“I”。我这样做完全错了吗?谢谢R 使用if语句添加变量,r,csv,R,Csv,我有一个包含学员姓名的csv文件和一个包含出版物列表的csv文件,其中包括一个定义作者姓名的变量。如果出版物中的作者姓名与学员文件中包含的任何学员姓名PEEP匹配,我希望R向出版物数据框添加一个变量,其中包含一个伪变量。下面的代码对我不起作用,我不知道为什么。我收到的错误是找不到对象“I”。我这样做完全错了吗?谢谢 publications <- read.csv("publications.csv", header = TRUE, stringsAsFactors = FALSE) tr
publications <- read.csv("publications.csv", header = TRUE, stringsAsFactors = FALSE)
trainees <- read.csv("TraineeRoster.csv", header = TRUE, stringsAsFactors = FALSE)
peeps <- trainee$LastName
publications["TraineePub"]
for (i in 1:nrow(publications)) {
if (publications$AuthorLast[i] == peeps) {
publications$TraineePub[i]
} else {
publications$TraineePub[i]
}
}
你可以试试这个。因为你的例子是不可复制的,所以我编了一些数据
set.seed(123)
publications <- data.frame(AuthorLast = sample(letters[1:10]), TraineePub = "no")
peeps <- letters[1:5]
publications$TraineePub[publications$AuthorLast %in% peeps] <- "yes"
publications
# AuthorLast TraineePub
# 1 c yes
# 2 h no
# 3 d yes
# 4 g no
# 5 f no
# 6 a yes
# 7 j no
# 8 i no
# 9 b yes
# 10 e yes
您可能应该阅读一些R教程,因为您的代码除了阅读原始表之外什么都不做。代码应该是这样的
publications <- read.csv("publications.csv", header = TRUE, stringsAsFactors = FALSE)
trainees <- read.csv("TraineeRoster.csv", header = TRUE, stringsAsFactors = FALSE)
peeps <- trainee$LastName
publications$IsTrainee = 1*(publications$AuthorLast %in% peeps & publications$AuthorFirst %in% trainee$FirstName)
write.csv(publications,file='PublicationsTrainee.csv')
但是,上面的代码有一些错误:
出版物[trainepub]没有任何作用。您可以添加逗号来尝试引用名为TraineePub的行或列,但我不知道该变量是否存在
publications$trainepub[i]调用一个值,但它不处理它,除非调用print,print将打印该值
编辑:此外,您应该尽量避免使用for循环。学习使用应用或仅使用向量运算,例如c1,2,3,4,5+c2,0,3,1,3等同于c3,2,6,5,8您是否尝试过使用ifelse?它在这里可能比for循环和if-else语句更有效。我还没有尝试过。我对r很陌生。谢谢你的提示,这很有道理。我简直不敢相信我已经通过了2个MOOC和O'Reilly的R食谱,我仍然遇到了这样的基本障碍。你的反馈真的很有帮助。谢谢大家!@user1362215谢谢@Henrik,这非常有帮助!