gpt4 book ai didi

R - 根据条件在数据框中创建新列

转载 作者:行者123 更新时间:2023-12-05 01:19:54 27 4
gpt4 key购买 nike

我需要在数据框中创建一个包含年字符串的列,该列将自动将每年标识为 "leap""reg"(常规)。

这是我目前所拥有的:

划定时间段

year<-(2009:2017)

为该时间段创建一个包含单列的数据框

prd_df<-data.frame(year)

创建一个空列,其中将标识 “leap”“reg”

prd_df["leap"]<-NA

使用条件循环进行碱基识别

for(i in 1:length(prd_df$year)){
if((prd_df$year[i]%%4==0)&(prd_df$year[i]%%100!=0)){
prd_df$leap<-'leap'
}else if((prd_df$year[i]%%4==0)&(prd_df$year[i]%%100==0)&(prd_df$year[i]%%400==0)){
prd_df$leap<-'leap'
}else{
prd_df$leap<-'reg'
}
}

根据生成的数据框创建一个表。

write.table(prd_df,
file = "prd.csv",
row.names = F, col.names = T,
sep = "\t")

这是我得到的:

"year"  "leap"
2009 "reg"
2010 "reg"
2011 "reg"
2012 "reg"
2013 "reg"
2014 "reg"
2015 "reg"
2016 "reg"
2017 "reg"

在上面的示例中,2012 年和 2016 年应该在第二列中标识为 “leap”,但它不起作用。作为其他代码的一部分,条件语句之前工作正常,但我现在无法让它工作。可能无法将 prd_df$year 识别为数字吗?

如有任何建议,我们将不胜感激。

谢谢

最佳答案

对于您的代码,当将新值分配给 leaf 列时,您错过了 [i]

 year<-(2009:2017)
prd_df<-data.frame(year)
prd_df["leap"]<-NA

for(i in 1:length(prd_df$year)){
if((prd_df$year[i]%%4==0)&(prd_df$year[i]%%100!=0)){
prd_df$leap[i]<-'leap'#add [i] here
}
else if((prd_df$year[i]%%4==0)&(prd_df$year[i]%%100==0)&(prd_df$year[i]%%400==0)){
prd_df$leap[i]<-'leap' #add [i] here
}else{
prd_df$leap[i]<-'reg'#add [i] here
}
}


prd_df
year leap
1 2009 reg
2 2010 reg
3 2011 reg
4 2012 leap
5 2013 reg
6 2014 reg
7 2015 reg
8 2016 leap
9 2017 reg

ifelse 多个条件

with(prd_df, ifelse(year %%4== 0 & year %%100 !=0, "leap", ifelse(year %%4== 0 & year %%100 !=0&year%%400==0,"leap","reg")))
[1] "reg" "reg" "reg" "leap" "reg" "reg" "reg" "leap" "reg"

关于R - 根据条件在数据框中创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46369721/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com