R 使用条件转换df
你好,我有一个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
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
。