【问题标题】:How to replace multiple string columns to binary values (0 and 1) in a dataframe?如何将多个字符串列替换为数据框中的二进制值(0 和 1)?
【发布时间】:2021-10-08 22:39:59
【问题描述】:

我正在尝试获取二进制矩阵,但首先我需要将多个字符串列替换为二进制值(0 和 1)。我试图在 R 和 python 中得到它,但代码不起作用。我想知道是否有人可以帮助我。

我有一个 29,584 行 x 982 列的矩阵,similar like:

  G       X4646466.555  X564737373.455  X737347474.56   
0 add     bp_ggfgfgg    
1 fgr     bb_jhfjfjf    bpp_fhfhfhf     bb_jfjfjf
2 dfr
3 tth                   bb_jdjfjdd
4 dee     bp_djdjdd
5 ee                    bp_dhsdhdh
6 ff                    bb_hfhfhf       bpp_dfhdhdhd
...

对于以 X 开头的每一列,都有不同的字符串值。这些值以 bb_、bpp_ 和 bp_ 开头。此外,还有数据缺失(空白)。我想用 1 替换以 X 开头的每一列(或除 G 之外的所有列)中的所有字符串值,并用 0 替换以 X 开头的列中的缺失数据。

I am attaching a imagen of the dataframe.

【问题讨论】:

  • 您在pythonR 中寻找答案吗?

标签: python r dataframe binary


【解决方案1】:

我们可以使用

library(dplyr)
df2 <- df1 %>%
    mutate(across(starts_with('X'), ~ +(!is.na(.)))

【讨论】:

  • 感谢您的帮助@akrun
【解决方案2】:

我们可以使用mutate acrosscase_when

library(dplyr)
df %>% 
    dplyr::mutate(across(starts_with("X"), ~case_when(is.na(.) ~ 0,
                                                TRUE ~ 1)))
# A tibble: 7 x 5
  G     X4646466.555 X564737373.455 X737347474.56    X5
  <chr>        <dbl>          <dbl>         <dbl> <dbl>
1 add              1              0             0     0
2 fgr              1              1             1     0
3 dfr              0              0             0     0
4 tth              1              0             0     0
5 dee              1              0             0     0
6 ee               1              0             0     0
7 ff               1              1             0     0

library(tidyverse)
df1 <- df[,-1] %>% 
    modify(~ ifelse(is.na(.), 0,1))
    
cbind(df[,1],df1)

【讨论】:

  • 感谢您的帮助@Tarjae
猜你喜欢
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 2017-04-25
  • 2017-07-12
  • 1970-01-01
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多