相关疑难解决方法(0)

将数据框架字符串列拆分为多个列

我想要获取表格的数据

before = data.frame(attr = c(1,30,4,6), type=c('foo_and_bar','foo_and_bar_2'))
  attr          type
1    1   foo_and_bar
2   30 foo_and_bar_2
3    4   foo_and_bar
4    6 foo_and_bar_2
Run Code Online (Sandbox Code Playgroud)

并使用split()上面的列" type"来得到这样的东西:

  attr type_1 type_2
1    1    foo    bar
2   30    foo  bar_2
3    4    foo    bar
4    6    foo  bar_2
Run Code Online (Sandbox Code Playgroud)

我提出了一些令人难以置信的复杂问题,涉及某种形式的apply工作,但我已经错了.这似乎太复杂了,不是最好的方式.我可以使用strsplit如下,但不清楚如何将其恢复到数据框中的2列.

> strsplit(as.character(before$type),'_and_')
[[1]]
[1] "foo" "bar"

[[2]]
[1] "foo"   "bar_2"

[[3]]
[1] "foo" "bar"

[[4]]
[1] "foo"   "bar_2"
Run Code Online (Sandbox Code Playgroud)

谢谢你的任何指示.我还没有完全理解R列表.

string split r dataframe r-faq

218
推荐指数
13
解决办法
32万
查看次数

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

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

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万
查看次数

当所需变量的数量未知时,如何使用tidyr :: separate

我有一个包含电子邮件通信的数据集.一个例子:

library(dplyr)
library(tidyr)

dat <- data_frame('date' = Sys.time(), 
                  'from' = c("person1@gmail.com", "person2@yahoo.com", 
                             "person3@hotmail.com", "person4@msn.com"), 
                  'to' = c("person2@yahoo.com,person3@hotmail.com", "person3@hotmail.com", 
                           "person4@msn.com,person1@gmail.com,person2@yahoo.com", "person1@gmail.com"))
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我很容易看到我需要多少变量,所以我可以执行以下操作:

dat %>% separate(to, into = paste0("to_", 1:3), sep = ",", extra = "merge", fill = "right")

#Source: local data frame [4 x 5]
#
#                 date                from                to_1                to_2              to_3
#               (time)               (chr)               (chr)               (chr)             (chr)
#1 2015-10-22 14:52:41   person1@gmail.com   person2@yahoo.com person3@hotmail.com                NA
#2 2015-10-22 14:52:41   person2@yahoo.com person3@hotmail.com                  NA                NA
#3 2015-10-22 14:52:41 person3@hotmail.com     person4@msn.com   person1@gmail.com person2@yahoo.com
#4 2015-10-22 …
Run Code Online (Sandbox Code Playgroud)

r tidyr

15
推荐指数
2
解决办法
4238
查看次数

使用sep ="." 来自"data.table"的`fread`

可以fread从"data.table"强制成功使用"."作为sep值吗?

我正试图在"splitstackshape"中fread加速我的concat.split功能.请参见本要点对我采取的一般方法,以及这个问题我为什么要作出这样的转变.

我遇到的问题是将dot(".")视为一个值sep.每当我这样做时,我都会收到"意外字符"错误.

以下简化示例演示了此问题.

library(data.table)

y <- paste("192.168.1.", 1:10, sep = "")

x1 <- tempfile()
writeLines(y, x1)
fread(x1, sep = ".", header = FALSE)
# Error in fread(x1, sep = ".", header = FALSE) : Unexpected character (
# 192) ending field 2 of line 1
Run Code Online (Sandbox Code Playgroud)

我在当前函数中使用的解决方法是替换"."原始数据中希望不存在的另一个字符"|",但是这对我来说似乎有风险,因为我无法预测其他人的数据集中的内容.这是行动中的解决方法.

x2 <- tempfile()
z <- gsub(".", "|", y, fixed=TRUE)
writeLines(z, …
Run Code Online (Sandbox Code Playgroud)

r fread data.table splitstackshape

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

R:用逗号将变量列拆分为多个(非平衡)列

我有一个包含25个变量和超过200万个观测值的数据集.我的一个变量是我想要拆分的几个不同"类别"的组合,每列显示1个类别(类似于stata中的拆分).例如:

# Name      Age     Number               Events                      First 
# Karen      24        8         Triathlon/IM,Marathon,10k,5k         0
# Kurt       39        2         Half-Marathon,10k                    0 
# Leah       18        0                                              1
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像:

# Name   Age  Number Events_1        Event_2      Events_3     Events_4      First
# Karen   24    8     Triathlon/IM    Marathon       10k         5k             0
# Kurt    39    2     Half-Marathon   10k            NA          NA             0 
# Leah    18    0     NA              NA             NA          NA             1
Run Code Online (Sandbox Code Playgroud)

我已经查看了stackoverflow但没有发现任何有效的东西(一切都给我一些错误).任何建议将不胜感激.

注意:可能不重要,但1人的最大类别数是19,因此我需要创建Event_1:Event_19

注释:以前的堆栈溢出建议使用单独的函数,但是此函数似乎不适用于我的数据集.当我输入函数时程序运行但是当它完成时没有任何改变,没有输出,也没有错误代码.当我尝试使用其他线程中提出的其他建议时,我收到了错误消息.但是,我终于通过使用cSplit功能得到了它.谢谢你的帮助!

split r

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

将分隔的字符串拆分为R数据帧中的不同列

我需要一种快速而简洁的方法将数据帧中的字符串文字拆分为一组列.假设我有这个数据框

data <- data.frame(id=c(1,2,3), tok1=c("a, b, c", "a, a, d", "b, d, e"), tok2=c("alpha|bravo", "alpha|charlie", "tango|tango|delta") )
Run Code Online (Sandbox Code Playgroud)

(请注意列之间的不同分隔符)

字符串列的数量通常是事先不知道的(尽管我可以尝试发现整个案例集,如果我没有其他选择)

我需要两个数据框,如:

tok1.occurrences:
    +----+---+---+---+---+---+
    | id | a | b | c | d | e | 
    +----+---+---+---+---+---+
    |  1 | 1 | 1 | 1 | 0 | 0 |
    |  2 | 2 | 0 | 0 | 1 | 0 |
    |  3 | 0 | 1 | 0 | 1 | 1 |
    +----+---+---+---+---+---+

tok2.occurrences:
    +----+-------+-------+---------+-------+-------+
    | id …
Run Code Online (Sandbox Code Playgroud)

substring r tokenize tm

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

在r中的数据框中提取每个字符串的第一部分

我有一个数据框M.我想提取每个字符串分隔的第一部分":".我使用strsplit但结果是一个大字符而不是数据框.有人可以帮忙吗?

M <- read.table(text=
"1/1:205,54,0:18:0:57 1/1:141,39,0:13:0:42   0/0:0,54,255:18:0:45 1/1:174,48,0:16:0:51 0/0:0,84,255:28:0:75 
 0/0:0,78,255:26:0:99 0/0:0,63,255:21:0:86   0/0:0,45,255:15:0:68 0/0:0,48,255:16:0:71 0/0:0,132,255:44:0:99
 0/0:0,78,255:26:0:89 0/0:0,78,255:26:0:89   0/0:0,36,255:12:0:47 0/0:0,33,255:11:0:44 0/0:0,108,255:36:0:99
 0/0:0,75,255:25:0:99 0/0:0,54,255:18:0:78   0/0:0,69,255:23:0:93 0/0:0,33,255:11:0:57 0/0:0,96,255:32:0:99 
 0/0:0,60,75:21:0:74  0/0:0,51,84:17:0:65    0/0:0,48,64:17:0:62  0/0:0,42,65:15:0:56  0/0:0,84,99:28:0:98 ",
head=F, stringsAsFactors=F)
S <- sapply(strsplit(M, ":"), "[", 1)
Run Code Online (Sandbox Code Playgroud)

r

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

根据标记字符将一列拆分为多列

我有一个包含两列的数据框:

**+-----+-------+
|  V1 |  V2     |
+-----+---------+
|  1  | a,b,c   |
|  2  | a,c     |
|  3  | b,d     |
|  4  | e       |
|  .  | .       |
+-----+-------+**
Run Code Online (Sandbox Code Playgroud)

我想根据第二列内的标记字符将第二列拆分为多列.我希望输出如下.

**+-----+-------------+
|  V1 |  V2 | V3 | V4 |
+-----+---------------+
|  1  |  a  | b  | c  |
|  2  |  a  | c  | NA |
|  3  |  b  | d  | NA |
|  4  |  e  | NA | …
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

标签 统计

r ×8

dataframe ×3

split ×2

data.table ×1

fread ×1

r-faq ×1

splitstackshape ×1

string ×1

substring ×1

tidyr ×1

tm ×1

tokenize ×1