我想在data.frame中创建新列,如下所示:
数据描述:
`'data.frame': 20 obs. of 3 variables:
$ gvkey : int 1004 1004 1004 1004 1004 1004 1004 1004 1004 1004 ...
$ DEF : int 0 0 0 0 0 0 0 0 0 0 ...
$ FittedRobustRatio: num 0.549 0.532 0.519 0.539 0.531 ...`
我写的功能不起作用:
fun.mark <- function(x,y){
if (x==0) { y[y>0.60] <- "Del"
} else (x==1) {
y[y<0.45] <- "Del2"}}
NewDataFrame <- ddply(ShorterData,~gvkey,transform,Fitcorr=fun.mark(DEF, FittedRobustRatio))
基本上我想做的是查看DEF列,如果0和FittedRobustRatio&gt; 0.60然后用“Del”替换该值,如果列DEF为1(列中只有0或1个值),则查看FittedRobustRatio列并用&lt; 0.45替换值,例如“Del2”。感谢。
答案 0 :(得分:0)
为此,我通常嵌套ifelse命令,ifelse设置如下:
ifelse(definition e.g. a>b, gets "x" if definition met, gets "y" if definition not met)
所以这应该有用......
data.frame$new.column <- ifelse (
data.frame$DEF=="0"&data.frame$FittedRobustRatio>0.6, "Del", ifelse(
data.frame$DEF=="1"&data.frame$FittedRobustRatio<0.45, "Del2", "none"))
我可能错了,因为你没有提供可重现的数据框,所以我无法测试它。