将if语句应用于数据框元素

时间:2017-02-17 15:49:59

标签: r loops if-statement for-loop dataframe

这是我想要做的: 1.读入csv文件 2.根据条件创建列号107并从列67复制值:'如果第70列中的行值为“是”,则仅复制值

代码:

report <- read.csv("C:\\Users\\ha317981\\Desktop\\practice\\input.csv",  header=1)
for(i in 1:length(report[[70]])-1){ 
    if(report[[i, 70]] =="Yes"){
      report[[i,107]] <-report[[i, 67]]  
    }
    i<- i + 1
  }
  

错误:[[.default中的错误(col,i,exact = exact):     尝试在get1index中选择少于一个元素

2 个答案:

答案 0 :(得分:2)

您可以使用矢量化操作替换您的代码,如下所示。

import math as m

x=1.2
k=0
N=25
s=0
sign=1.0

while k<N: 
    term=sign*x**(k)/m.factorial(k)
    s=s+term
    k += 2
    sign = -sign

print(s)

答案 1 :(得分:2)

您还可以使用与mutate配对的dplyr包中的ifelse

来自文档:

&#34; Mutate添加新变量并保留现有变量; transmute丢弃现有变量。&#34;

require(dplyr)
report <- read.csv("C:\\Users\\ha317981\\Desktop\\practice\\input.csv",  header=1)

# mutate(tbl_df, NewColumn = Value, ...)

newReport <- mutate(report, Col107 = ifelse(Col70 == "Yes", Col67, NA))

这将根据第70列的值在您的(可能是?)数据框中创建一个新变量,其中值将从第67列或NA复制。