r

时间:2016-11-17 09:28:57

标签: r if-statement rvest

我有一个数据框,我使用rveststr_split_fixed抓取一些数据。

它看起来像这样

a     b       c         d

48    08      7        10
52    03      6        05
47    05      3        05
48    05     6+11      00
     7.5     0548      14
      6      0550      06
41    05     2.5       08
 1  0251     6         10

由于数据存储在这个网站上的方式,我最终会得到一些行,其中变量存储在错误的列中,而某些列是空白的,而其他列包含两个变量。

目前,对于上面的例子,我试图纠正"第5行和第6行,因为它们的格式是相同的错误方式。如果我能弄清楚如何使这个ifelse工作,我将能够做1或2个以纠正进入数据帧格式错误的其他行(在这个例子中,例如,第4行和第8行仍然需要工作)

我尝试使用具有多个条件和多个操作的if语句来纠正此问题。

这是我最近尝试过的:

if(nchar(df$a) < 2 && nchar(df$b) < 5) {
       df$c <- df$b
       df$d <- substr(df$c, 0, 2)
       df$b <- df$d
       df$a <- substr(df$c, 3, 10)} 
  else {
             df <- df}

代码运行但是出来的数据帧与它的进展情况相同,我期望输出的第5行和第6行

48   14   7.5    05
50   06    6     05

我首先尝试搜索,当然有很多关于多个条件或多个动作的问题,但是我很难找到一个在游戏中或者以类似于我能够应用解决方案的方式

编辑:这是我做str_split_fixed

之前的一些数据
"52u-08-3½ -03" "47o-09-2½ -17" "-7½ -0548u-14"  "-1½ -0840u-06"

这些4的期望输出是:

a   b   c    d
52   08  3.5  03
47   09  2.5  17
48   14  7.5  05
40   06  1.5  08

也许我应该只是寻找一种更复杂和外科的方式来分割数据,基于它的格式是如何格式化的。我非常不熟练,所以当我尝试新东西时,我的代码通常非常像frankstein-monster。

0 个答案:

没有答案