gpt4 book ai didi

r - 根据符号拆分 data.frame 中的行

转载 作者:行者123 更新时间:2023-12-04 10:58:21 25 4
gpt4 key购买 nike

我想将字符串由 /ab 分隔的行拆分为新行。请参阅下面的输入和输出示例。也许我们可以使用 strsplit(d$values,split='/', fixed=TRUE),但是如何将它们变成新行?

> head(d,3)
values ind
54 miR-197 9846
55 miR-197 9846
113 miR-221/222/222ab/1928 56204

输出

    structure(list(values = c("miR-197", "miR-197", "miR-221/222/222ab/1928"
), ind = structure(c(4L, 4L, 6L), .Label = c("6482", "4057",
"60481", "9846", "7414", "56204", "84957", "29924", "6095", "8301",
"2355", "88455", "23047", "57590", "5829", "162", "3091", "9766",
"23406", "3646", "22870", "22898", "8775", "8178", "2077", "64115",
"6158", "5007", "8567", "10019", "26127", "4739", "6678", "27013",
"6146", "51060", "1997", "847", "4035", "79026", "8192", "5782",
"1032", "4354", "5791", "2752", "9873", "6386", "5962", "2230",
"6938", "6727", "7090", "92912", "55784", "409", "23521", "6279",
"51312", "7357", "2040", "2934", "9219", "2180", "219333", "114908",
"50807", "90268", "3098", "1974", "56990", "7791", "162989",
"9159", "7086", "51762", "9318", "23582", "10632", "54815", "1938",
"3576", "11214", "167227", "156", "2745", "6138", "391", "10933",
"5501", "3638", "2316", "2869", "10527", "255809"), class = "factor")), row.names = c(54L,
55L, 113L), class = "data.frame")

预期输出

values   ind
miR-197 9846
miR-197 9846
miR-221 56204
222a 56204
222b 56204
1928 56204

最佳答案

无耻地窃取了 Ronak Shah 的初始解决方案。然后拆分 'ab'。

此解决方案并非普遍适用于所有字母,因此如果试图将其扩展到包含“a”和“b”以外的字母的更大问题,则需要注意和修改。

首先我们添加一个索引列来帮助排序,最后将删除。

df <- tidyr::separate_rows(df, values, sep = "\\/")
df$index <- seq_len(nrow(df))
df_ab <- df[grep('ab',df$values),]
df$values <- gsub("ab","a",df$values)
df_ab$values <- gsub("ab","b",df_ab$values)
df <- rbind(df,df_ab)
df <- df[order(df$index),]
df$index <- NULL

## values ind
## 1 miR-197 9846
## 2 miR-197 9846
## 3 miR-221 56204
## 4 222 56204
## 5 222a 56204
## 51 222b 56204
## 6 1928 56204

关于r - 根据符号拆分 data.frame 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52813967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com