繁体   English   中英

基于 dataframe R 中的其他列创建新列

[英]Creating a new column based on other columns in a dataframe R

我有一个看起来像这样的 dataframe:

df <- data.frame('col1'=c(1,2,2,4,5), 'col2'=c(4,9,3,5,13), 'col3'=c(3,5,8,7,10))
> df
  col1 col2 col3
1    1    4    3
2    2    9    5
3    2    3    8
4    4    5    7
5    5   13   10

如果行中的至少一个值大于或等于 8,我想创建一个值为 1 的新列,如果行中的所有值都小于 8,则创建一个值为 0 的新列。所以最后结果看起来像这样:

> df
  col1 col2 col3  new
1    1    4    3    0 
2    2    9    5    1
3    2    3    8    1
4    4    5    7    0
5    5   13   10    1

谢谢!

这有效:

df$new <- apply(df, 1, function(x) max(x >= 8))
df
#   col1 col2 col3 new
# 1    1    4    3   0
# 2    2    9    5   1
# 3    2    3    8   1
# 4    4    5    7   0
# 5    5   13   10   1

使用rowSums

df$new <- +(rowSums(df>=8, na.rm=TRUE) > 0); df
  col1 col2 col3 new
1    1    4    3   0
2    2    9    5   1
3    2    3    8   1
4    4    5    7   0
5    5   13   10   1

或者使用矩阵乘法

df$new <- as.numeric(((df >= 8) %*% rep(1, ncol(df))) > 0)
df
  col1 col2 col3 new
1    1    4    3   0
2    2    9    5   1
3    2    3    8   1
4    4    5    7   0
5    5   13   10   1

# Or logical column
df$new <- ((df >= 8) %*% rep(1, ncol(df))) > 0
df
  col1 col2 col3   new
1    1    4    3 FALSE
2    2    9    5  TRUE
3    2    3    8  TRUE
4    4    5    7 FALSE
5    5   13   10  TRUE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM