【发布时间】:2017-01-05 23:20:50
【问题描述】:
我有两个数据框 x 和 y。
x<-data.frame("j"=c("A","B","C"),"k"=c(1,90,14))
x j k
1 A 1
2 B 90
3 C 14
y<-data.frame("A"=c(1,0,0,1,1),"B"=c(0,1,0,0,1),"C"=c(1,1,1,0,0))
A B C
1 1 0 1
2 0 1 1
3 0 0 1
4 1 0 0
5 1 1 0
我需要一个带有条件语句的函数,如果在数据集 y 中有一个 0 a 替换为 -1 或 1 替换为 A 列中的 1 等等以获得这个结果。
z<-data.frame("A"=c(1,-1,-1,1,1),"B"=c(-90,90,-90,-90,90),"C"=c(14,14,14,-14,-14))
A B C
1 1 -90 14
2 -1 90 14
3 -1 -90 14
4 1 -90 -14
5 1 90 -14
【问题讨论】:
-
如果把0换成-1,基本上就是乘法:
(-(y == 0) + y) * matrix(x$k, nrow(y), ncol(y), byrow = TRUE) -
如果在 x 和 y 之间匹配 pf 列和行的顺序:
y[y==0] <- -1 ; y* x$k[col(y)]
标签: r function if-statement dataframe