library()
.install.packages("randomNames")
library(randomNames)
set.seed(1234) # чтобы у всех получались одинаковые результаты
names <- randomNames(100, which.names = "first", ethnicity = 4)
ages <- sample(16:75, 100, replace = TRUE) # replace = TRUE - с повторяющимися значениями
А также вектор polit
– политические взгляды респондентов:
views <- c("right", "left", "moderate", "indifferent")
polit <- sample(views, 100, replace = TRUE)
Создайте из полученных трёх векторов датафрейм.
info <- cbind.data.frame(names, ages, polit)
head(info)
## names ages polit
## 1 Luis 55 left
## 2 Briana 47 indifferent
## 3 Courtney 35 moderate
## 4 Mariah 62 left
## 5 Lateisha 47 indifferent
## 6 Kassandra 59 left
id
с номерами респондентов.info$id <- 1:100
n <- nrow(info[info$ages >= 25 & info$ages <= 30, ])
n
## [1] 6
# доля в процентах
n / nrow(info) * 100
## [1] 6
polit_views
. Сколько у полученного фактора уровней? Добавьте в датафрейм столбец polit_views
.info$polit_views <- factor(info$polit)
Firms.csv
. Почитать про базу можно здесь. Посмотрите на таблицу.df <- read.csv("Firms.csv")
str(df)
## 'data.frame': 248 obs. of 5 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ assets : int 147670 133000 113230 85418 75477 40742 40140 26866 24500 23700 ...
## $ sector : Factor w/ 10 levels "AGR","BNK","CON",..: 2 2 2 2 2 4 9 2 9 8 ...
## $ nation : Factor w/ 4 levels "CAN","OTH","UK",..: 1 1 1 1 1 1 1 1 1 4 ...
## $ interlocks: int 87 107 94 48 66 69 46 16 77 6 ...
# полностью
nrow(df[complete.cases(df), ])
## [1] 248
# содержащие NA - таких нет
nrow(df[!complete.cases(df), ])
## [1] 0
Отфильтруйте наблюдения в таблице согласно следующим критериям:
# способ 1
dat1 <- df[df$assets >= 10000 & df$assets <= 20000, ]
# способ 2
dat1 <- subset(df, assets >= 10000 & assets <= 20000)
* фирмы, число управляющих позиций, совместных с другими фирмами, которых не превышает 30;
# способ 1
dat2 <- df[df$interlocks <= 30, ]
# способ 2
dat2 <- subset(df, interlocks <= 30)
* фирмы транспортного сектора (`TRN`) под руководством управляющих из Канады (`CAN`);
# 1 способ
dat3 <- df[df$sector == "TRN" & df$nation == "CAN", ]
# 2 способ
dat3 <- subset(df, sector == "TRN" & nation == "CAN")
log_assets
) и добавьте её в датафрейм.df$log_assets <- log(df$assets)
# неактуально - таких нет
# тоже не очень актуально, но пусть будет
df <- na.omit(df)
“Firms.dta”
)library(foreign)
write.dta(df, "Firms.dta")