R 将数据帧转换为1和0
我有一个像这样的大桌子:R 将数据帧转换为1和0,r,dplyr,tidyverse,R,Dplyr,Tidyverse,我有一个像这样的大桌子: a b c d e f 1 1 1 0 0 1 4 5 1 1 0 1 3 1 0 0 0 0 理想情况下,使用tidyverse将其转换为0,这样0将保留,而1及更大的值将转换为1: a b c d e f 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 0 0 0 变量有不同的名称,从第二列到最后一列 谢谢 您可以使用pmin,它将在1和数据帧中的值之间选择最小值 pmin(df, 1) # a b c d e f #1 1 1 1 0 0
a b c d e f
1 1 1 0 0 1
4 5 1 1 0 1
3 1 0 0 0 0
理想情况下,使用tidyverse将其转换为0,这样0将保留,而1及更大的值将转换为1:
a b c d e f
1 1 1 0 0 1
1 1 1 1 0 1
1 1 0 0 0 0
变量有不同的名称,从第二列到最后一列
谢谢 您可以使用pmin,它将在1和数据帧中的值之间选择最小值
pmin(df, 1)
# a b c d e f
#1 1 1 1 0 0 1
#2 1 1 1 1 0 1
#3 1 1 0 0 0 0
资料
tidyverse方法可以是:
library(dplyr)
df %>%
mutate_all(~ +(.x > 0))
a b c d e f
1 1 1 1 0 0 1
2 1 1 1 1 0 1
3 1 1 0 0 0 0
如果要转换除第一列以外的所有列,可以执行以下操作:
df %>%
mutate_at(vars(-1), ~ +(.x > 0))
我认为你可以做到这一点,而无需全部变异,+df>0@RonakShah-绝对-这个答案是对OP中“理想情况下使用tidyverse”的回应。也许我做了一些奇怪的事情,但我使用它得到了意想不到的结果,例如:set.seed1;df df[]@最近的邮件是的,我也收到了NAs,这很奇怪。转换为矩阵可以工作pminas.matrixdf,1,但是为什么pmindf,1不能直接工作呢?特别是当post中的df也是dataframe时。这看起来有点困难,但我认为这是有道理的,因为像meandf这样的函数不再像那样工作了。当将pmin与任何非向量的东西一起使用时,会出现一些奇怪的转换。这似乎有可能值得讨论。至少可以指定一条更好的警告消息。
df %>%
mutate_at(vars(-1), ~ +(.x > 0))