R - 子集并包括计算列

时间:2017-10-17 05:00:36

标签: r calculated-columns mutate

假设我有这个简单的数据框:

df <- data.frame(x=c(1,3,3,1,3,1), y = c(2,2,2,2,2,2),z = c('a','b','c','d','e','f'))

> df
  x y z
1 1 2 a
2 3 2 b
3 3 2 c
4 1 2 d
5 3 2 e
6 1 2 f

我想将x= 3放在哪里,只返回列xy并包含计算的列x+y
我可以完成前两件事,但我也无法让caclulated列出现。

df[df$x==3,c("x","y")]

我该怎么做,但只使用base R

2 个答案:

答案 0 :(得分:1)

保持<IfModule mod_php5.c> php_flag log_errors on php_value error_log ./path_to_MY_PHP_ERRORS.log </IfModule> ,只需在您的子集之前执行base

rowSums

就我个人而言,我确实更喜欢df$xy <- rowSums(df[, c("x", "y")]) df[df$x == 3, c("x", "y", "xy")] # x y xy # 2 3 2 5 # 3 3 2 5 # 5 3 2 5 方法,而@akrun对您的问题发表评论。

答案 1 :(得分:1)

您也可以这样做

df <- data.frame(x=c(1,3,3,1,3,1), y = c(2,2,2,2,2,2),z = c('a','b','c','d','e','f'))

df$z <- ifelse(df$x == 3, (df$x + df$y), df$y)
df

  x y z
1 1 2 2
2 3 2 5
3 3 2 5
4 1 2 2
5 3 2 5
6 1 2 2