从数据框字符列修改和创建矢量

时间:2017-09-22 14:59:28

标签: r

使用R中的iris数据集,我正在尝试创建一个包含列Petal.Width中所有数据点的新向量。在创建新向量时,我想为setosa Species的每个值添加1,但保留其他Petal.Width值相同。我正在尝试使用if语句。

if(Species=="setosa"){
  Petal.Width+1
} else{
   (Petal.Width)
}

警告讯息:

In if (Species == "setosa") { :   the condition has length > 1 and only the first element will be used

3 个答案:

答案 0 :(得分:1)

使用import { combineReducers } from 'redux'; import CalendarReducer from './CalendarReducer'; export default combineReducers({ calendarData: CalendarReducer }); 代替

render() {
    console.log(this.props)
   return( blah blah);
}

const mapStateToProps = state => {
  return { calendarData: state.calendarData };
}; 

export default connect(mapStateToProps)(HomeScreen);

答案 1 :(得分:0)

当我们使用数字列添加时,逻辑向量可以被强制转换为二进制,TRUE表示1,FALSE为0。因此,我们不需要if/elseifelse条件。

with(iris, (Species == "setosa") + Petal.Width)

答案 2 :(得分:0)

请注意,这确实是一个R问题,而不是Rstudio问题。无论您使用哪种界面,答案都是一样的。

@danielanderson给出了一个很好的答案,这里还有一些供您考虑和希望学习的内容:

iris <- within(iris, petal_1= Petal.Width + ifelse(Species=='setosa', 1, 0))
iris$petal_1 <- iris$Petal.Width + ( iris$Species == 'setosa' )
iris[['petal_1']] <- iris$Petal.Width + c(1,0,0)[ iris$Species ]

如果您想要匹配任何一个组而不是一个值,请查看%in%