相关疑难解决方法(0)

将字符串数组转换为R中的数据帧

假设我有一个字符串数组,如:

sa<-c("HLA:HLA00001 A*01:01:01:01 1098 bp",
      "HLA:HLA01244 A*01:01:02 546 bp",
      "HLA:HLA01971 A*01:01:03 895 bp")
Run Code Online (Sandbox Code Playgroud)

我的问题是将它转换为数据框的最佳方法是什么,例如:

  Seq          Type             Length
1 HLA:HLA00001 A*01:01:01:01    1098 bp
2 HLA:HLA01244 A*01:01:02       546 bp
3 HLA:HLA01971 A*01:01:03       895 bp
Run Code Online (Sandbox Code Playgroud)

r dataframe

2
推荐指数
1
解决办法
246
查看次数

在几列中拆分一列字符串

我有数据框

df=data.frame(x=rnorm(8),y=runif(8),longstring=c("foo_100_Case1","foo_125_Case1","bar_100_Case1","bar_125_Case1","foo_100_Case2","foo_125_Case2","bar_100_Case2","bar_125_Case2"),stringsAsFactors = F)
Run Code Online (Sandbox Code Playgroud)

我需要将最后一列拆分为三列,分隔符为"_".我一直在做以下事情:

a=matrix(unlist(strsplit(df$longstring,"_",fixed=T)),8,3,byrow = T)
df$type=a[,1]
df$point=a[,2]
df$case=a[,3]
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有一种更简单的方法:组合strsplitunlist特别笨拙,并且它不会使代码非常易读.

r strsplit dataframe

1
推荐指数
1
解决办法
390
查看次数

r - 字符串中的单独数字

在此示例中,分隔digitsfrom 的最有效方法是什么letters:

       V1 V2
1 p_men_1  1
2 p_men_2  0
3 p_men_3  1
4 p_wom_1  1
5 p_wom_2  1
6 p_wom_3  0
Run Code Online (Sandbox Code Playgroud)

输出中

     V1 V2 V3
1 p_men  1  1
2 p_men  2  0
3 p_men  3  1
4 p_wom  1  1
5 p_wom  2  1
6 p_wom  3  0
Run Code Online (Sandbox Code Playgroud)

我试过了

library(tidyr) 
library(dplyr)

df %>% separate(V1, c('V1', 'V2'), sep = '_')
Run Code Online (Sandbox Code Playgroud)

但由于'_',它不起作用

  df = rbind(c('p_men_1', 1), 
  c('p_men_2', 0), 
  c('p_men_3', 1), 
  c('p_wom_1', 1), 
  c('p_wom_2', 1), 
  c('p_wom_3', 0)) …
Run Code Online (Sandbox Code Playgroud)

regex r

1
推荐指数
1
解决办法
844
查看次数

如何提取R的strsplit()的结果

关于问题 :

我有一个字符串向量foo:

>foo = c("1x2","3x4","5x6","7x8","9x10")
Run Code Online (Sandbox Code Playgroud)

我将单个字符串拆分为"x"并将结果粘贴到goo中:

>goo = strsplit(foo, "x")
>goo
[[1]]
[1] "1" "2"

[[2]]
[1] "3" "4"

[[3]]
[1] "5" "6"

[[4]]
[1] "7" "8"

[[5]]
[1] "9"  "10"
Run Code Online (Sandbox Code Playgroud)

如何从此列表中提取第一个和第二个"列"?(我想要(1,3,5,7,9)和(2,4,6,8,10))

r strsplit

1
推荐指数
1
解决办法
133
查看次数

使用 R/tidyverse 在未定义的列数中分隔数据框的列

我必须导入一个类似于以下数据框的表:

> df = data.frame(x = c("a", "a.b","a.b.c","a.b.d", "a.d"))
> df
      x
1  <NA>
2     a
3   a.b
4 a.b.c
5 a.b.d
6   a.d
Run Code Online (Sandbox Code Playgroud)

我想根据我会找到多少个分隔符将第一列分隔在一列或多列中。

输出应该像这样

> df_separated
  col1 col2 col3
1    a <NA> <NA>
2    a    b <NA>
3    a    b    c
4    a    b    d
5    a    d <NA>
Run Code Online (Sandbox Code Playgroud)

我尝试在 tidyr 中使用单独的函数,但我需要先验地指定我需要多少输出列。

非常感谢您的帮助

r data-import tidyr tidyverse

1
推荐指数
1
解决办法
702
查看次数

拆分列分隔符R.

我有一个数据框如下.我想将最后一列拆分为2.拆分需要基于唯一的第一列完成:其余的列不重要.

在新数据框中,将有4列.第3列为(a,b,d),第4列为(1,2:3,3:4:4)

有什么建议?我的代码的第4行不起作用:(.我可以使用全新的解决方案或对第4行进行更正

employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(3, 2, 1)
df <- data.frame(employee, salary, originalColumn = c("a :1", "b :2:3", "d: 3:4:4"))

as.data.frame(do.call(rbind, strsplit(df,":")))
Run Code Online (Sandbox Code Playgroud)

-------------------- UPDATE1

以下解决方案效果很好 但我需要一个修改过的解决方案,因为我刚刚意识到第3列中的某些单元格不会有":".在这种情况下,我希望该单元格中的文本在拆分该列后仅出现在第一列中

employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(3, 2, 1)
df <- data.frame(employee, salary, originalColumn = c("a :1", "b", "d: 3:4:4"))
Run Code Online (Sandbox Code Playgroud)

split r delimiter

0
推荐指数
1
解决办法
980
查看次数

在R中使用通配符拆分或替换字符串

我有以下向量:

a <- c("abc_lvl1", "def_lvl2")
Run Code Online (Sandbox Code Playgroud)

我基本上想分成两个向量: ("abc", "def")("lvl1", "lvl2).我知道如何用sub替换:

sub(".*_", "", a)
[1] "lvl1" "lvl2"
Run Code Online (Sandbox Code Playgroud)

我认为这可以转化为"在"_"之前搜索任意数量的任何字符,并且一无所获." 因此 - 我想 - 这应该给我另一个所需的矢量:

sub("_*.", "", a),但它只删除了主角:

[1] "bc_lvl1" "ef_lvl2"
Run Code Online (Sandbox Code Playgroud)

我在哪里陷入困境?这基本上等同于excel中的"text-to-columns"功能.

regex r

0
推荐指数
1
解决办法
827
查看次数

拆分包含多个电话号码的数据框列

例如,该行之一包含9343435445/9433445532.我想拆分它们并将各个单独的粘贴在一个新列中.我尝试了以下内容.

bookings <- read.csv(file = 'bookings.csv', header = T)
bookings$set1 <- as.character(bookings$set1)
bookings$set3 <- gsub('\\/..........', '',bookings$set1)
bookings$set4 <- gsub('\\d{10}\\/', ' ',bookings$set1)
Run Code Online (Sandbox Code Playgroud)

但是没有给出理想的输出.

r

0
推荐指数
1
解决办法
51
查看次数

如何将逗号分隔的多个响应转换为 R 中的虚拟编码列

在一项调查中,有一个问题是“课程的哪个方面对您学习概念帮助最大?选择所有适用的”

以下是回复列表的样子:

Student_ID = c(1,2,3)
Responses = c("lectures,tutorials","tutorials,assignments,lectures", "assignments,presentations,tutorials")
Grades = c(1.1,1.2,1.3)
Data = data.frame(Student_ID,Responses,Grades);Data

Student_ID | Responses                           | Grades
1          | lectures,tutorials                  | 1.1
2          | tutorials,assignments,lectures      | 1.2
3          | assignments,presentations,tutorials | 1.3
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个看起来像这样的数据框

Student_ID | Lectures | Tutorials | Assignments | Presentation | Grades
1          |     1    |     1     |      0      |       0      |  1.3
2          |     1    |     1     |      1      |       0      |  1.4
3          |     0    |     1     |      1      |       1      |  1.3 …
Run Code Online (Sandbox Code Playgroud)

r surveymonkey dummy-variable

0
推荐指数
1
解决办法
864
查看次数

将1列拆分为数据框中的2列

这是我的数据框架.

    > data
       Manufacturers  
1   Audi,RS5  
2   BMW,M3  
3   Cadillac,CTS-V  
4   Lexus,ISF
Run Code Online (Sandbox Code Playgroud)

所以我想分割制造商和模型,像这样,

    > data
    Manufacturers       Models
1   Audi                RS5  
2   BMW                 M3  
3   Cadillac            CTS-V  
4   Lexus               ISF
Run Code Online (Sandbox Code Playgroud)

我很感激这个问题的任何帮助.非常感谢.

split r strsplit

-4
推荐指数
1
解决办法
4万
查看次数