Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.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 使用条件转换df_R_Dataframe_Dplyr - Fatal编程技术网

R 使用条件转换df

R 使用条件转换df,r,dataframe,dplyr,R,Dataframe,Dplyr,你好,我有一个df,例如: Groups Seq VALUE G1 Seq1 0 G1 Seq2 10 G1 Seq1 20 G1 Seq1 2 G1 Seq3 0 G2 Seq1 0 G2 Seq1 0 G2 Seq2 0 G3 Seq1 8 G3 Seq1 7 G4 Seq2 0 我想将其转换为: Seq G1 G2 G3 G4 Seq1 TRUE FALSE TRUE FALSE Seq2 TRUE FALSE FALSE FALSE Seq3 FALSE

你好,我有一个df,例如:

Groups Seq VALUE 
G1 Seq1 0
G1 Seq2 10
G1 Seq1 20
G1 Seq1 2
G1 Seq3 0
G2 Seq1 0
G2 Seq1 0
G2 Seq2 0
G3 Seq1 8
G3 Seq1 7
G4 Seq2 0
我想将其转换为:

Seq  G1    G2    G3    G4
Seq1 TRUE  FALSE  TRUE  FALSE
Seq2 TRUE  FALSE FALSE FALSE
Seq3 FALSE FALSE FALSE FALSE
其中,
是列名,如果组内的
任何Seq值>0,则我将
设置为TRUE
,否则将
设置为FALSE

到目前为止,我试过:

as.data.frame(test_df) %>% 
  group_by(Groups,Seq) %>% 
  summarise(
    x=case_when(
      any(Seq > 0) ~ "TRUE",
  ) %>% 
  pivot_wider(names_from = Groups, values_from = x)

直接使用
pivot\u

tidyr::pivot_wider(df, names_from = Groups, values_from = Value,
                    values_fn = list(Value = ~any(. > 0)), values_fill = FALSE)

# A tibble: 3 x 5
#  Seq   G1    G2    G3    G4   
#  <chr> <lgl> <lgl> <lgl> <lgl>
#1 Seq1  TRUE  FALSE TRUE  FALSE
#2 Seq2  TRUE  FALSE FALSE FALSE
#3 Seq3  FALSE FALSE FALSE FALSE
tidyr::pivot\u wide(df,name\u from=Groups,values\u from=Value,
值\u fn=list(值=~any(.>0)),值\u fill=FALSE)
#一个tibble:3x5
#序号G1 G2 G3 G4
#      
#1序号1正确-错误-正确-错误
#2序号2正确-错误-错误
#3序号3假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假

直接使用
pivot\u wide

tidyr::pivot_wider(df, names_from = Groups, values_from = Value,
                    values_fn = list(Value = ~any(. > 0)), values_fill = FALSE)

# A tibble: 3 x 5
#  Seq   G1    G2    G3    G4   
#  <chr> <lgl> <lgl> <lgl> <lgl>
#1 Seq1  TRUE  FALSE TRUE  FALSE
#2 Seq2  TRUE  FALSE FALSE FALSE
#3 Seq3  FALSE FALSE FALSE FALSE
tidyr::pivot\u wide(df,name\u from=Groups,values\u from=Value,
值\u fn=list(值=~any(.>0)),值\u fill=FALSE)
#一个tibble:3x5
#序号G1 G2 G3 G4
#      
#1序号1正确-错误-正确-错误
#2序号2正确-错误-错误
#3序列3假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假假

必须是summary()中的
值,而不是
seq


也可以简化为
摘要(x=any(VALUE>0))
(未测试)

必须是
值,而不是摘要()


此外,这可以简化为
摘要(x=any(VALUE>0))
(未测试)

您不使用列
Seq
?在示例中只有3列,但在实际df中有20列,我只需要关注这3列。您可以首先
选择您感兴趣的列,或者在上面的答案中的
id\u cols=Seq
中添加
id\u cols=Seq
。您不使用
Seq
列吗?在示例中只有3列,但在实际df中有20列,我只需要关注这3列。您可以首先
选择您感兴趣的列,或者在上面的答案中添加
id\u cols=Seq