繁体   English   中英

R 在某些条件下用同一行中另一列的值替换或保留一列中的值

[英]R Replace value or keep value in one column with value from another column in the same row with certain conditions

将某一列中的值替换为具有特定条件的同一行中另一列的值之后,我还有一个问题

我有一个包含“A”、“B”和“Dict”列的数据框

现在,前一个问题和这个问题之间的区别在于“Dict”具有“A”、“B”和“C”的值

“A”和“B”表示每一行的值应该在正确的列中,我想保持“C”不变

例如:

A            B             Dict
0           123            B
0           123            A
123         0              A
123         0              C
0           123            C

如果“Dict”在同一行中有A,我想将“B”中的值移动到“A”,并将该值替换为0。如果“Dict”有C,则该行不变:

A            B             Dict
0           123             B
123          0              A
123          0              A
123          0              C
0           123             C

目前我在上一个问题中使用的是蔡大仁的回答:

df %>%
  mutate(across(A:B, ~ ifelse(Dict == cur_column(), A+B, 0))) 

但它给了我

A            B             Dict
0           123             B
123          0              A
123          0              A
0            0              C
0            0              C

有谁知道我如何更改 function 所以当“Dict”的值为 C 它不会将行更改为零?

在条件语句中添加另一个条件怎么样?

read_table("A            B             Dict
0           123            B
0           123            A
123         0              A
123         0              C
0           123            C
") %>%
  mutate(across(A:B, ~case_when(Dict == cur_column() ~ A+B,
                                Dict == "C" ~ .,
                                TRUE ~ 0))) 

# # A tibble: 5 × 3
#       A     B Dict 
#   <dbl> <dbl> <chr>
# 1     0   123 B    
# 2   123     0 A    
# 3   123     0 A    
# 4   123     0 C    
# 5     0   123 C    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM