我想基于分隔符在数据帧中将一列拆分为两列.例如,
a|b
b|c
Run Code Online (Sandbox Code Playgroud)
成为
a b
b c
Run Code Online (Sandbox Code Playgroud)
在数据框内.
谢谢!
我想要完成的是将列拆分为多个列.我希望第一列包含"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) 有这样的数据框:
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) 我正在浏览strsplit
R中的一些答案.示例文本:
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)
但是,我正在试图找出原因.到底发生了什么,以及[
与任何事情有什么关系?在我看来,它在语义上令人困惑.
我有一个数据框,例如
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 "
部分使用什么分隔符
编辑:这被标记为重复.它不是.这里的问题不仅仅是将单个列拆分为多个列,因为我的单独代码会起作用.我的问题的要点是当行字符串具有不同长度的列输出时拆分列.
我试图改变这个:
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) 我有一个像这样的位置列的数据集(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)
我究竟做错了什么?
我想保留 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
我想通过向量中定义的多个分隔符来分割字符:
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
什么想法吗?
我有一个具有以下结构的数据框,标题为“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 =”不断抛出此错误。任何帮助,将不胜感激!