相关疑难解决方法(0)

在数据框中的分隔符处拆分列

我想基于分隔符在数据帧中将一列拆分为两列.例如,

a|b
b|c
Run Code Online (Sandbox Code Playgroud)

成为

a    b
b    c
Run Code Online (Sandbox Code Playgroud)

在数据框内.

谢谢!

r dataframe

98
推荐指数
6
解决办法
21万
查看次数

将数据框字符串列拆分为多个不同的列

我想要完成的是将列拆分为多个列.我希望第一列包含"F",第二列"US",第三列"CA6"或"DL",第四列是"Z13"或"U13"等等.我的整个df遵循相同的模式X.XX.XXXX.XXX或X.XX.XXX.XXX或X.XX.XX.XXX我知道第三列是我的问题所在,因为长度不同.我过去只使用了substr,我可以在这里使用一些if语句,但是想学习如何使用stringr包和POSIX来做到这一点(除非有更好的选择).先感谢您.

这是我的df:

c("F.US.CLE.V13", "F.US.CA6.U13", "F.US.CA6.U13", "F.US.CA6.U13", 
"F.US.CA6.U13", "F.US.CA6.U13", "F.US.CA6.U13", "F.US.CA6.U13", 
"F.US.DL.U13", "F.US.DL.U13", "F.US.DL.U13", "F.US.DL.Z13", "F.US.DL.Z13"
)
Run Code Online (Sandbox Code Playgroud)

split r dataframe stringr

27
推荐指数
3
解决办法
9万
查看次数

使用第一个拆分字符将行分隔为列

有这样的数据框:

data.frame(text = c("separate1: and: more","another 20: 42")
Run Code Online (Sandbox Code Playgroud)

如何在每一行中使用第一个 : 进行分隔?预期输出示例

data.frame(text1 = c("separate1","another 20"), text2 = c("and: more","42")
Run Code Online (Sandbox Code Playgroud)

r

8
推荐指数
2
解决办法
162
查看次数

究竟与'['做什么?

我正在浏览strsplitR中的一些答案.示例文本:

fileName <- c("hello.w-rp-al",
              "how.nez-r",
              "do.qs-sdz",
              "you.d-aerd",
              "do.dse-e")
Run Code Online (Sandbox Code Playgroud)

我想获得创建列表的第一个元素,并认为我可以使用诸如此类的东西

fileNameSplit <- strsplit(fileName, "[.]")
node_1 <- fileNameSplit[0]
node_2 <- fileNameSplit[1]
Run Code Online (Sandbox Code Playgroud)

但那没用.

然后我发现这个答案是建议使用sapply[.这确实有效.

d <- data.frame(fileName)
fileNameSplit <- strsplit(d$fileName, "[.]")
d$node_1 <- sapply(fileNameSplit, "[", 1)
d$node_2 <- sapply(fileNameSplit, "[", 2)
Run Code Online (Sandbox Code Playgroud)

但是,我正在试图找出原因.到底发生了什么,以及[与任何事情有什么关系?在我看来,它在语义上令人困惑.

string split r

7
推荐指数
2
解决办法
1296
查看次数

创建具有多个分隔符的两列

我有一个数据框,例如

COl1
scaffold_97606_2-BACs_-__SP1_1
UELV01165908.1_2-BACs_+__SP2_2
UXGC01046554.1_9-702_+__SP3_3
scaffold_12002_1087-1579_-__SP4_4
Run Code Online (Sandbox Code Playgroud)

我想将两者分成两列并得到:

COL1           COL2 
scaffold_97606 2-BACs_-__SP1_1
UELV01165908.1 2-BACs_+__SP2_2
UXGC01046554.1 9-702_+__SP3_3
scaffold_12002 1087-1579_-__SP4_4
Run Code Online (Sandbox Code Playgroud)

所以你可以看到分隔符的变化,它可以是.Number_Number_Number

到目前为止,我写道;

df2 <- df1 %>%
    separate(COL1, paste0('col', 1:2), sep = " the separator patterns ", extra = "merge")
Run Code Online (Sandbox Code Playgroud)

但我不知道我应该在这" the separator patterns "部分使用什么分隔符

regex r dataframe delimiter-separated-values

5
推荐指数
2
解决办法
62
查看次数

使用tidyr将具有不均匀字符串长度的行拆分为R中的列

编辑:这被标记为重复.它不是.这里的问题不仅仅是将单个列拆分为多个列,因为我的单独代码会起作用.我的问题的要点是当行字符串具有不同长度的列输出时拆分列.

我试图改变这个:

data <- c("Place1-Place2-Place2-Place4-Place2-Place3-Place5",
          "Place7-Place7-Place7-Place7-Place7-Place7-Place7-Place7",
          "Place1-Place1-Place1-Place1-Place3-Place5",
          "Place1-Place4-Place2-Place3-Place3-Place5-Place5",
          "Place6-Place6",
          "Place1-Place2-Place3-Place4")
Run Code Online (Sandbox Code Playgroud)

进入:

      X1     X2     X3     X4     X5     X6     X7     X8
1 Place1 Place2 Place2 Place4 Place2 Place3 Place5 
2 Place7 Place7 Place7 Place7 Place7 Place7 Place7 Place7
3 Place1 Place1 Place1 Place1 Place3 Place5 
4 Place1 Place4 Place2 Place3 Place3 Place5 Place5 
5 Place6 Place6 
6 Place1 Place2 Place3 Place4
Run Code Online (Sandbox Code Playgroud)

我尝试使用此代码使用tidyr的单独函数:

library(data.table)
data <- as.data.table(data)
data_table <- tidyr::separate(data,
                            data,
                            sep="-",
                            into = strsplit(data$data, "-"),
                            fill = "right")
Run Code Online (Sandbox Code Playgroud)

可悲的是我收到了这个错误:

Warning message:
Too …
Run Code Online (Sandbox Code Playgroud)

regex string r tidyr

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

如何使用单独的R将列拆分为两个

我有一个像这样的位置列的数据集(41.797634883,-87.708426986).我想把它分成纬度和经度.我尝试使用tidyr包中的单独方法

library(dplyr)
library(tidyr)
df <- data.frame(x = c('(4, 9)', '(9, 10)', '(20, 100)', '(100, 200)'))
df %>% separate(x, c('Latitude', 'Longitude'))
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误

Error: Values not split into 2 pieces at 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

r tidyr

3
推荐指数
2
解决办法
2万
查看次数

strsplit 并在第一个下划线之前保留部分

我想保留 FIRST 后的部分。请参阅示例代码。

colnames(df)
"EGAR00001341740_P32_1"    "EGAR00001341741_PN32"
Run Code Online (Sandbox Code Playgroud)

我的尝试,但没有给出,P32_1而只是P32哪个是错误的。

sapply(strsplit(colnames(df), split='_', fixed=TRUE), function(x) (x[2]))
Run Code Online (Sandbox Code Playgroud)

所需的输出: P32_1, PN32

string split r

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

用多个字符分割字符串

我想通过向量中定义的多个分隔符来分割字符:

text1   <- "aweoiutw839572/)(&2aslk2468" 
text2   <- "147we547iu5erhg24tzu" 
dat <-  rbind(text1, text2)
vector <- c("we", "iu", "24")
Run Code Online (Sandbox Code Playgroud)

结果应该是:

var1 del1 var2 del2  var3                del3 var4
a    we   o    iu    tw839572/)(&2aslk   24   68
147  we   547  iu    5erhg               24   tzu
Run Code Online (Sandbox Code Playgroud)

strsplit什么想法吗?

r character delimiter strsplit

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

根据逗号分割数据框列

我有一个具有以下结构的数据框,标题为“final_proj_data”

ID          County              Population     Year  
<dbl>       <chr>               <dbl>          <dbl>    
1003    Baldwin County, Alabama 169162         2006     
1015    Calhoun County, Alabama 112903         2006     
1043    Cullman County, Alabama 80187          2006     
1049    DeKalb County, Alabama  68014          2006 
Run Code Online (Sandbox Code Playgroud)

我试图将“县”列拆分为两个不同的列“县”和“州”,并删除逗号。

我尝试了 split() 函数的多种排列,但我不断收到此错误:

错误:var必须计算为单个数字或列名称,而不是字符向量

我已经尝试过(除其他外)

  final_proj_data %>% 
separate(final_proj_data$County, c("State", "County"), sep = ",", remove = TRUE)
    final_proj_data %>% 
separate(data = final_proj_data, col = County,
 into = c("State", "County"), sep = ",")
Run Code Online (Sandbox Code Playgroud)

我不确定我做错了什么,或者为什么“col =”不断抛出此错误。任何帮助,将不胜感激!

r dplyr tidyr

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