查找数据框中两个列元素之间的差异

时间:2013-11-07 14:47:51

标签: r

我的问题是一个非常基本的问题,我是R和编程新手。我的数据框RESULT有两列MaxMin和500行。我只是想找出MaxMin之间的差异,并将值放在第三列Difference中。我尝试了代码:

select Max, Min, Max-Min as Difference from RESULT.

但我得到了

  

错误:“选择最大”中的意外符号。

我也尝试过:

Difference<-c(RESULT$Max-RESULT$Min) 

我得到了:

  

警告讯息

     

在Ops.factor中(RESULT $ Max,RESULT $ Min):          - 对因素没有意义

结果:

    Max Min
1   NaN NaN
2   25  NaN
3   NaN NaN
4   NaN NaN
5   NaN NaN
6   25.6   23.1

我想在NaN列中显示XYDifference中的任何其他变量,只要NaN中的任何一个Max }或Min。输出应该是:

    Max Min   Difference
1   NaN NaN   NaN
2   25  NaN   NaN
3   NaN NaN   NaN
4   NaN 34    NaN
5   NaN NaN   NaN
6   25.6   23.1   2.5

3 个答案:

答案 0 :(得分:11)

如果df是您的data.frame,df$V3 <- df$V1 - df$V2应添加名为V3的新列,这是列V1V2之间的差异。< / p>

您的错误消息显示列是因素。您可以通过df$V1 <- as.numeric(as.character(df$V1))V2

类似地将它们转换为数字类

答案 1 :(得分:2)

您可以使用以下代码生成所需的输出:

# Please import data as df.csv with given 2 columns name and respective data
setwd("D:\\Vishnu Jayswal\\Data_Science")
read.csv("df.csv")
View(df)
di <- ifelse(is.nan(df$Max) ==TRUE | is.nan(df$Min) ==TRUE,NaN,df$Max-df$Min)
di
df_final <- data.frame(df,di)
df_final

答案 2 :(得分:1)

您还可以尝试在R数据帧上执行SQL选择的sqldf包。

RESULT <- sqldf("select MAX, MIN, (MAX - MIN) AS Difference from RESULT")

通过这种方式,您将拥有3列MAXMIN&amp; RESULT