如何将数据框中的每个值映射到0或1

时间:2016-07-08 17:42:33

标签: r dataframe

我在R中有一个由非负整数组成的数据帧。我想将数据框中的每个值转换为0或1,以便:x => x > 0 ? 1 : 0

我遇到了apply()方法,但这似乎将整个行/列作为输入。是否有将每个单独数据点映射到新值的方法?

1 个答案:

答案 0 :(得分:0)

您可以使用类似于三元运算符的ifelse。

以下是一个例子:

x <- c(1,2,3,4,0)
x <- ifelse(x > 0 , 1 , 0)
x
[1] 1 1 1 1 0

另一个例子,对于数据框:

df <- data.frame(A=c(0,0,0,1,2,3), B=c(0,10,20,30,40,0))
> df
  A  B
1 0  0
2 0 10
3 0 20
4 1 30
5 2 40
6 3  0

modified_df <- data.frame(A = ifelse(df$A > 0 , 1 , 0 ) , B = ifelse(df$B > 0 , 1 , 0 ))

> modified_df
  A B
1 0 0
2 0 1
3 0 1
4 1 1
5 1 1
6 1 0