我想编写一个代码来检查数据框中的两列并进行比较。一个应该是最高温度,另一个是最低温度。如果Tmax列的值小于Tmin,则它应该交换值。我需要对文件夹中的多个文件执行此操作。
Date TMAX TMIN
1 01/01/1960 4.7353 -4.3722
2 01/02/1960 8.3800 11.0600
3 01/03/1960 3.4400 -3.5300
4 01/04/1960 -1.4300 -8.2200
5 01/05/1960 -1.9600 -5.0100
6 01/06/1960 4.5800 -6.3400
7 01/07/1960 -8.8900 -2.7300
运行代码后,它应该产生类似
的东西 Date TMAX TMIN
1 01/01/1960 4.7353 -4.3722
2 01/02/1960 11.0600 8.3800
3 01/03/1960 3.4400 -3.5300
4 01/04/1960 -1.4300 -8.2200
5 01/05/1960 -1.9600 -5.0100
6 01/06/1960 4.5800 -6.3400
7 01/07/1960 -2.7300 -8.8900
答案 0 :(得分:3)
dplyr::mutate(df, TMAX = pmax(TMAX, TMIN), TMIN = pmin(TMAX, TMIN))
或者只是
transform(df, TMAX = pmax(TMAX, TMIN), TMIN = pmin(TMAX, TMIN))
答案 1 :(得分:2)
怎么样:
df <- data.frame(TMAX=1:5,TMIN=c(2,1,6,3,4))
dfn <- df
dfn$TMAX <- pmax(df$TMIN,df$TMAX)
dfn$TMIN <- pmin(df$TMIN,df$TMAX)
## TMAX TMIN
## 1 2 1
## 2 2 1
## 3 6 3
## 4 4 3
## 5 5 4
答案 2 :(得分:1)
(也许不是最优雅的方式)假设您的数据被称为df
:
check<-df[,2]>df[,3]
dfn<-df
dfn[!check,3]<-df[!check,2]
dfn[!check,2]<-df[!check,3]
更优雅的方式是:
transform(df, V2=ifelse(V2<V3,V3,V2),V3= ifelse(V3>V2,V2,V3))