我想要获取表格的数据
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列表.
我想基于分隔符在数据帧中将一列拆分为两列.例如,
a|b
b|c
Run Code Online (Sandbox Code Playgroud)
成为
a b
b c
Run Code Online (Sandbox Code Playgroud)
在数据框内.
谢谢!
我有一个包含电子邮件通信的数据集.一个例子:
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) 可以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) 我有一个包含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功能得到了它.谢谢你的帮助!
我需要一种快速而简洁的方法将数据帧中的字符串文字拆分为一组列.假设我有这个数据框
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) 我有一个数据框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) 我有一个包含两列的数据框:
**+-----+-------+
| 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)