gpt4 book ai didi

r - 代入计算结果

转载 作者:行者123 更新时间:2023-12-04 14:27:14 24 4
gpt4 key购买 nike

我正在处理数据,具体来说,我打开了这个 pdf http://pubs.acs.org/doi/suppl/10.1021/ja105035r/suppl_file/ja105035r_si_001.pdf并从表 s4 中抓取数据,

    1a 1b 1a 1b
1 5.27 4.76 5.09 4.75
2 2.47 2.74 2.77 2.80
4 1.14 1.38 1.12 1.02
6 7.43 7.35 7.22-7.35a 7.25-7.36a
7 7.38 7.34 7.22-7.35a 7.25-7.36a
8 7.23 7.20 7.22-7.35a 7.25-7.36a
9(R) 4.16 3.89 4.12b 4.18b
9(S) 4.16 3.92 4.12b 4.18b
10 1.19 0.91 1.21 1.25

将其粘贴到记事本中并将其保存为txt文件。
s4 <- read.table("s4.txt", header=TRUE, stringsAsFactors=FALSE)

给,
   X1a  X1b      X1a.1      X1b.1
1 5.27 4.76 5.09 4.75
2 2.47 2.74 2.77 2.80
4 1.14 1.38 1.12 1.02
6 7.43 7.35 7.22-7.35a 7.25-7.36a
7 7.38 7.34 7.22-7.35a 7.25-7.36a
8 7.23 7.20 7.22-7.35a 7.25-7.36a

为了使用数据,我需要将其全部更改为数字并删除字母,感谢此链接 R regex gsub separate letters and numbers我可以使用以下代码,
gsub("([[:alpha:]])","",s4[,3])

我可以去掉多余的字母。

我现在想做的,也是问题的重点,是改变范围,
"7.22-7.35" "7.22-7.35" "7.22-7.35"

用他们的手段,
"7.29"

我可以为此使用 gsub 吗? (或者我是否需要跨连字符进行 strsplit,组合成一个向量并返回平均值?)。

最佳答案

这是一种似乎适用于示例数据的方法:

df[] <- lapply(df, function(col){
col <- gsub("([[:alpha:]])","", col)
col <- ifelse(grepl("-", col), mean(as.numeric(unlist(strsplit(col[grepl("-", col)], "-")))), col)
as.numeric(col)
})

> df
# X1a X1b X1a.1 X1b.1
#1 5.27 4.76 5.090 4.750
#2 2.47 2.74 2.770 2.800
#4 1.14 1.38 1.120 1.020
#6 7.43 7.35 7.285 7.305
#7 7.38 7.34 7.285 7.305
#8 7.23 7.20 7.285 7.305

免责声明:只有在每列中的范围都相同(如示例数据中)时才正确

关于r - 代入计算结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27483688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com