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)
现在,我正在尝试向该数据集添加两列:
第一列(“cat”)会联合查看“a1”和“b1”,并将它们分配到“3 bins”(“a”、“b”、“c”)基于一些随机标准
第二列(“quant”)将计算每个“bin”的第 60 个分位数,并将这个第 60 个分位数计算放在具有该“bin”的每一行中
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.
我正在使用 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)
现在,我正在尝试向该数据集添加两列:
第一列(“cat”)会联合查看“a1”和“b1”,并将它们分配到“3 bins”(“a”、“b”、“c”)基于一些随机标准
第二列(“quant”)将计算每个“bin”的第 60 个分位数,并将这个第 60 个分位数计算放在具有该“bin”的每一行中
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.