【问题标题】:Convert written text in columns to numbers in R将列中的书面文本转换为 R 中的数字
【发布时间】:2018-02-07 06:12:45
【问题描述】:

R 的新手-sh。

挑战:我有这个数据框,列中有许多变量(见下文)。我需要将“$ TIMEPT : chr”的文本转换为数值并进行一些数学运算。

$ SUBJ  : chr  "1" "2" "3" "4" ...
$ VISIT   : chr  "0" "12" "34" "84" ...
$ TIMEPT  : chr "Within 15 minutes prior to stopping infusion" "Within 5 minutes prior to stopping infusion" "5 minutes post infusion" "15 minutes post infusion" ...

我的 2 种方法:

1.

df$TIMEPT <-replace (df$TIMEPT, df$TIMEPT == "Within 15 minutes
prior to dosing", 0)

这种方法仅适用于我尝试的第一组文本 将 TIMEPT 变量转换为因子:

2.

df$TIMEPT <- within(df, TIMEPT <- df$TIMEPT <- factor(TIMEPT, labels
= c(0, 1,2,3.92,4.08, 4.25, 4.5, 5, 6, 7, 10)))

这种方法 (2) 创建了所有变量的嵌套表(然后 df 变得更大更复杂)。使用以下表达式无法将这些因子转换为数字:

df$TIMEPT <- as.numeric(as.numeric(df$TIMEPT))   

问题 - 如何将这种“长”文本 TIMEPT 转换为数值?

预期结果

过度简化是:

SUBJID 访问时间PT
1 1 0 0
2 2 0 1

3 3 0 2

4 4 0 3
...

注意: $TIMEPT 中的文本在 df 中具有相似的数值。例如,文本指定“5 分钟前”、“5 分钟前”、“5 分钟后”......因此,数值解析可能不起作用(我会按照下面的建议尝试)

【问题讨论】:

  • 你的预期输出是什么?
  • 我很难解释你的问题。你能澄清你想要达到的目标吗?如果可能,您会提供最少的样本数据并显示您的预期结果吗?这将帮助 SO 用户帮助您。
  • 澄清我的问题:
  • 澄清我的问题:如何将文本转换为数值?预期的结果应该是: $ TIMEPT : num 0, 1,2,3.92,4.08 ... 结果将用于绘制每个 $ SUBJID 、 $ VISIT 和 $Dependent 变量(上面未显示)。
  • 你可以edit你的澄清直接进入你的问题。

标签: r


【解决方案1】:

试试这个

df$newvariable<-readr::parse_number(df$TIMET)

它应该只从字符串中提取数字。

示例:

c<-data.frame(x=c(1,2,3,4,5,6,7,8,9), y=c("10 mins", "20 mins", "30 mins", "40 mins", "50 mins", "60 Minutes", "70 mins", "80 mins", "90 minutes"))
c$y<-as.character(c$y)
c$t<-readr::parse_number(c$y)


c
  x          y  t
1 1    10 mins 10
2 2    20 mins 20
3 3    30 mins 30
4 4    40 mins 40
5 5    50 mins 50
6 6 60 Minutes 60
7 7    70 mins 70
8 8    80 mins 80
9 9 90 minutes 90

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多