我有一个三列的数据框:Col1、Col2、Col3。Col1中的数据可以是数字或文本。如果Col1中的值大于1000000,我希望将该值移至下一列(Col2)。以下是数据示例:
df <- data.frame(Col1 = c(1100000, 5320133, "Teste", "Cor13", "Fell505", 2732154),
Col2 = c(0, 0, 1100000, 5320133, 2732154, 0),
Col3 = c(0, 0, 0, 0, 0, 0))
我希望将数据转换为如下形式:
df_new <- data.frame(Col1 = c("", "", "Teste", "Cor13", "Fell505", ""),
Col2 = c(1100000, 5320133, 1100000, 5320133, 2732154, 2732154),
Col3 = c(0, 0, 0, 0, 0, 0))
在R中如何实现这一点?
3条答案
按热度按时间bqujaahr1#
使用多种数据类型会使这一点变得困难,而且这也不是很清楚,但我将把这一部分留给您。
neekobn82#
使用
str_extract
获取数字。注意,这将替换 Col2 中的值。如果要确保保留数据,请使用val + Col2
。如果要使用base R
ru9i0ody3#
使用循环的基R方法(不太像R)可能是:
给予
我们可以忽略警告消息,因为它们或多或少是
is.na()
-trick用来克服不常见数据格式的。或者,您可以将循环 Package 到suppressWarnings()
中。