【问题标题】:Function to replace values in column替换列中的值的函数
【发布时间】:2013-07-18 08:00:25
【问题描述】:

我想在 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 > 0.60,然后用“Del”替换值,如果列 DEF 为 1(列中只有 0 或 1 个值)然后看进入 FittedRobustRatio 列并将

【问题讨论】:

  • 你能让你的例子重现吗?
  • 感谢 Roman,Griffin 的解决方案有效。抱歉,我不确定如何提供可重现的数据。数据说明。按“str”就足够了。
  • 未来参考,请参阅stackoverflow.com/questions/5963269/…

标签: r


【解决方案1】:

为此,我通常会嵌套 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"))

我可能错了,因为您没有提供可重现的数据框,所以我无法对此进行测试。

【讨论】:

  • 谢谢,有点用。但是留下“无”而不是数字,但没关系。
  • @Max 你想要里面的数字是多少?如果它是 FittedRobust.. 数字,则将“none”替换为 data.frame$FittedRobustRatio - 如果有效,请不要忘记接受答案:)
  • 哦,是的,抱歉,我没有正确查看您的代码!当然,正如您所指出的那样,“无”将被替换:)
猜你喜欢
  • 2020-10-28
  • 2023-04-04
  • 1970-01-01
  • 2014-08-21
  • 2021-05-27
  • 2021-07-19
  • 2020-05-20
  • 1970-01-01
  • 2014-11-12
相关资源
最近更新 更多