R:所有变量值都相同

R: all variable values are identical

我正在使用 R 编程语言。

我创建了以下数据集:

  library(dplyr)
set.seed(123)

#train data
a1 = rnorm(1000,100,10)
b1 = rnorm(1000,200,5)
c1 = sample.int(1000, 1000, replace = TRUE)
train_data = data.frame(a1,b1,c1)

下图显示了变量“a1”和“b1”的分布:

hist(a1)
hist(b1)

现在,我正在尝试向该数据集添加两列:

1) 第一列:

    #random criteria
    random_1 =  runif(1, 0, 100)
    random_2 =  runif(1, 100, 200)
    
    #view plot (with rough outline of desired bins)
    plot(train$a1, train$b1)

# attempt to make the first column:
train_data <- train_data %>% mutate(cat = ifelse(a1 <= random_1 & b1 <= random_1, "a", ifelse(a1 <= random_2 & b1 <= random_2, "b", "c"))) 

但是,这会导致“cat”列的所有值都为“a”:

table(train_data$cat)

 a 
1000 

问题:有谁知道如何解决这个问题?为什么所有内容都显示为“a”?

2) 第二列:

这使我无法正确添加第二列:

#convert to factor
train_data$cat = as.factor(train_data$cat)

#calculate 60th quantile for "c1" per unique value of "cat":

 train_data%>% 
  group_by(cat) %>% 
  summarise(quant = quantile(c1, prob = c(.6)))

不幸的是,这会产生一个值:

  cat   quant
  <fct> <dbl>
1 a      647. 

而我希望“a”、“b”和“c”的第 60 个分位数显示为“train_data”中的一列(例如,在“train_data”table,任何时候“cat = a”,然后是“quant = 60th percentile using values c1”,等等)

有人可以帮我解决这些错误吗?

谢谢

如果你想将数据随机分成3组你可以使用cut -

library(dplyr)

train_data %>%
  group_by(cat = cut(a1, 3, labels = c('a', 'b', 'c'))) %>%
  summarise(quant = quantile(c1, prob = .6))

#  cat   quant
#  <fct> <dbl>
#1 a      636 
#2 b      650.
#3 c      690.