提取一個字母並將其放在R中的一個單獨的列中

馬爾瓦·阿爾卡比

我有這樣的數據集:

df<-data.frame(ID=(1:5), cloumn1=c("AA","GG","AG","AA","AT"), cloumn2=c("AA","GG","AG","AA","AT"), stringsAsFactors=FALSE)
df
ID cloumn1 cloumn2
 1      AA      AA
 2      GG      GG
 3      AG      AG
 4      AA      AA
 5      AT      AT

我想將每一列分成 2 個字母,以便輸出如下所示:

ID cloumn1.A cloumn1.B cloumn2.A cloumn2.B
 1         A         A         A         A
 2         G         G         G         G
 3         A         G         A         G
 4         A         A         A         A
 5         A         T         A         T

你能幫我嗎?

尤里·薩雷金
library(tidyverse)

df %>% 
  pivot_longer(-ID) %>% 
  mutate(tmp = str_split(value, pattern = "")) %>% 
  unnest(tmp) %>% 
  group_by(ID, name) %>% 
  mutate(id_row = LETTERS[row_number()]) %>% 
  pivot_wider(id_cols = c(ID, name), names_from =c(name, id_row), values_from = tmp, names_sep = ".") %>% 
  ungroup()

#> # A tibble: 5 x 5
#>      ID cloumn1.A cloumn1.B cloumn2.A cloumn2.B
#>   <int> <chr>     <chr>     <chr>     <chr>    
#> 1     1 A         A         A         A        
#> 2     2 G         G         G         G        
#> 3     3 A         G         A         G        
#> 4     4 A         A         A         A        
#> 5     5 A         T         A         T

數據

df <-
  data.frame(
    ID = (1:5),
    cloumn1 = c("AA", "GG", "AG", "AA", "AT"),
    cloumn2 = c("AA", "GG", "AG", "AA", "AT"),
    stringsAsFactors = FALSE
  )

reprex 包(v2.0.1)於 2021 年 11 月 5 日創建

數據表

library(data.table)

setDT(df)

melt(data = df, id.vars = "ID") %>% 
  .[, list(value = unlist(strsplit(value, split = ""))), by = list(ID, variable)] %>% 
  .[, id_row := LETTERS[rowid(ID, variable)]] %>% 
  dcast(formula = ID ~ variable + id_row, value.var = "value")

   ID cloumn1_A cloumn1_B cloumn2_A cloumn2_B
1:  1         A         A         A         A
2:  2         G         G         G         G
3:  3         A         G         A         G
4:  4         A         A         A         A
5:  5         A         T         A         T

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

將 n 個單獨的對象保存到一個類中

如何從一個長字符串中提取 2 個日期並將它們放在兩個不同的列中?

如何在向量的所有元素上循環函數,除了一個元素,並將結果存儲在數據框的單獨列中

使用 Pandas 將兩個獨立單元格中的值轉換為一個單元格

如何從一行中的不同列中獲取值並將它們寫入單獨行上的單個單元格而不用excel vba覆蓋

Shell腳本一次將一個大文件中的行分成兩個單獨的文件?

tkinter 字體在一個單獨的文件中

我想要一個基於條件的列名列表,在一個單獨的列中以排序的形式

R 將某些列中的所有值偏移一個單位

在 R 中,如何根據特定的行/列條件有選擇地將一個單元格“複製並粘貼”到另一個單元格中?

如何從每個組中選擇前 5 個日期並將它們放在 Oracle 中以逗號分隔的單個列中?

如何在 Pandas 中將兩個單獨的單元格合併為一個奇異的組合值

編寫一個Java程序,將句子中每個單詞的首字母大寫

如何為循環中的每個按鈕分配一個單獨的值?

如何知道一個值是否存在於三個單獨的列表中?

如何選擇某些字典鍵,然後將整個字典移動到一個單獨的列表中

檢查python中的多個列表中是否存在一個元素並將其附加

單擊時,將一個項目從一個數組推送到另一個,並根據數組中的項目更改文本

如何取一個整數並將其前面的每個數字放入數組中?

創建一個單獨的列,其中分數與熊貓中的排名相反

從數據庫表中提取字段並將其保存到另一個的函數中的問題

將單元格與同一列中的前一個單元格進行比較 - VBA

Qt Designer 和 Python 在單獨的 functions.py 中運行一個函數

計算每個唯一 ID 的兩個單獨數據框中的列值的增加/減少百分比

在 Vim 中一次在單獨的選項卡中打開多個文件(超過 10 個)

在讀提交事務中,每個 WITH 查詢都算作一個單獨的命令嗎?

搜索關鍵字列然後將值複製到序列中的 2 個單獨的目標

從 firebase 中檢索一個字段並將其顯示在文本小部件中

在C中如何讀取一個進程的輸出並將其寫入另一個進程的輸入中?