我有一个 Dataframe df,其中包含多个名为x_1、x_2、x_3等的列,这些列是类字符,但我想将它们转换为数字。问题是,有些值是小数,而其他值是百分比,包含一个%符号。请参阅我在此处的输入:
df <- data.frame(Company = c("abc", "def", "ghi"),
x_1 = c(0.05, "0.6%", "11.25%"),
x_y_1 = c("val_1", "val_2", "val_3"),
x_2 = c("3.5%", 0.12, 0.7),
x_y_2 = c("val_1", "val_2", "val_3"),
x_3 = c(0.83, 0.4, "0.9%"),
x_y_3 = c("val_1", "val_2", "val_3")
)
> df
Company x_1 x_y_1 x_2 x_y_2 x_3 x_y_3
1 abc 0.05 val_1 3.5% val_1 0.83 val_1
2 def 0.6% val_2 0.12 val_2 0.4 val_2
3 ghi 11.25% val_3 0.7 val_3 0.9% val_3
我想把列x_1、x_2、x_3转换成numeric,所以输出应该如下所示:
> df
Company x_1 x_y_1 x_2 x_y_2 x_3 x_y_3
1 abc 0.05 val_1 0.035 val_1 0.83 val_1
2 def 0.006 val_2 0.12 val_2 0.4 val_2
3 ghi 0.1125 val_3 0.7 val_3 0.009 val_3
我如何只将包含%符号的值转换为正确的数值?谢谢。
1条答案
按热度按时间t1rydlwq1#
这些示例中的前提是一个两步过程:
1.根据
%
的存在确定分母;1.通过删除
%
(无论其是否存在)并转换为numeric
来推导分子。碱基R
天