将列拆分为 2 并按数字替换字符 - R
spliting column into 2 and replace character by number - R
我得到了以下格式的结果:
Parameter Wert
...
99 se.m 0.1000
100 se.m 0.1000
101 se.st 0.5000
102 se.st 0.500
...
我想将 Parameter
列拆分为两列:Parameter
和 Insentität
。拆分应该在点 .
所在的位置进行。然后在结果列 Intensität
中,我想用 2
的值替换所有 m
,并用 3
的值替换所有 st
。结果应如下所示:
Parameter Intensität Wert
...
99 se 2 0.4000
100 se 2 0.0396
101 se 3 0.2702
102 se 3 1.1566
...
我已经设法获得了这种格式,但我相信还有更优雅的方法。
我获得结果的方式很笨拙。我最初在输出中有 2 列:se.m
和 se.st
。我手动更改了列名:
colnames(results) <- c("2", "3")
然后将两列合并为一列。然后我在每一行中添加了一个包含字符 se
的列。
results <- melt(results)
cbind( Parameter ="se", results)
我知道还有一个 alretnatives。例如,通过使用 tidyr
中的 extract
,但我无法获得正确的表达式语法。还有 stringr
包,我可以使用 str_match
函数或者也可以使用 strsplit
。所有这些看起来都很棒,但我似乎无法将它们应用于我的问题。我被困在这里。有类似的问题,但我找不到适合我的解决方案。
PS:我感谢任何输入 - 评论、批评、提示。我是一名学习者,任何建议对我来说都很有价值。
我们可以使用separate
library(tidyr)
library(dplyr)
separate(df1, Parameter, into = c("Parameter", "Intensitat")) %>%
mutate(Intensitat = recode(Intensitat, m = 2, st = 3))
# Parameter Intensitat Wert
#1 se 2 0.1
#2 se 2 0.1
#3 se 3 0.5
#4 se 3 0.5
或者我们可以通过指定 sep
来分离使用 read.table
,使用 "Wert" 列
执行 transform
ation 和 cbind
]
cbind(transform(read.table(text= as.character(df1$Parameter),
col.names = c("Parameter", "Intensitat"), sep="."),
Intensitat = ifelse(Intensitat=="m", 2, 3)), df1["Wert"])
# Parameter Intensitat Wert
#99 se 2 0.1
#100 se 2 0.1
#101 se 3 0.5
#102 se 3 0.5
我得到了以下格式的结果:
Parameter Wert
...
99 se.m 0.1000
100 se.m 0.1000
101 se.st 0.5000
102 se.st 0.500
...
我想将 Parameter
列拆分为两列:Parameter
和 Insentität
。拆分应该在点 .
所在的位置进行。然后在结果列 Intensität
中,我想用 2
的值替换所有 m
,并用 3
的值替换所有 st
。结果应如下所示:
Parameter Intensität Wert
...
99 se 2 0.4000
100 se 2 0.0396
101 se 3 0.2702
102 se 3 1.1566
...
我已经设法获得了这种格式,但我相信还有更优雅的方法。
我获得结果的方式很笨拙。我最初在输出中有 2 列:se.m
和 se.st
。我手动更改了列名:
colnames(results) <- c("2", "3")
然后将两列合并为一列。然后我在每一行中添加了一个包含字符 se
的列。
results <- melt(results)
cbind( Parameter ="se", results)
我知道还有一个 alretnatives。例如,通过使用 tidyr
中的 extract
,但我无法获得正确的表达式语法。还有 stringr
包,我可以使用 str_match
函数或者也可以使用 strsplit
。所有这些看起来都很棒,但我似乎无法将它们应用于我的问题。我被困在这里。有类似的问题,但我找不到适合我的解决方案。
PS:我感谢任何输入 - 评论、批评、提示。我是一名学习者,任何建议对我来说都很有价值。
我们可以使用separate
library(tidyr)
library(dplyr)
separate(df1, Parameter, into = c("Parameter", "Intensitat")) %>%
mutate(Intensitat = recode(Intensitat, m = 2, st = 3))
# Parameter Intensitat Wert
#1 se 2 0.1
#2 se 2 0.1
#3 se 3 0.5
#4 se 3 0.5
或者我们可以通过指定 sep
来分离使用 read.table
,使用 "Wert" 列
transform
ation 和 cbind
]
cbind(transform(read.table(text= as.character(df1$Parameter),
col.names = c("Parameter", "Intensitat"), sep="."),
Intensitat = ifelse(Intensitat=="m", 2, 3)), df1["Wert"])
# Parameter Intensitat Wert
#99 se 2 0.1
#100 se 2 0.1
#101 se 3 0.5
#102 se 3 0.5