Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将数据帧转换为1和0_R_Dplyr_Tidyverse - Fatal编程技术网

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))