TimeSplitter: ошибка в eval (замена (выход), data, parent.frame ()): объект 'Age' не найден - PullRequest
0 голосов
/ 22 марта 2019

Я новичок в R. Буду признателен, если вы решите мой вопрос.

это мой код:

dat1 <- read.csv("data.csv",header=T)
spl_dat1 <-
     dat1 %>%
     timeSplitter(by = 5,
                  time_var = "Age",
                  event_var = "Alive",
                  event_start_status = "1",
                  time_related_vars = c("Born", "Death"))

И это моя фотография базы данных: введите описание изображения здесь

это мой dput(head(dat1))

Born = c(1949L,1949L, 1949L, 1949L, 1949L, 1949L), 
Death = c(1970L, 1954L, 1954L,1954L, 1954L, 1968L), 
Age = c(22, 6, 6, 6, 6, 20), 
Alive = c(0L, 0L, 0L, 0L, 0L, 0L), 
Type = structure(c(3L, 5L, 5L, 5L, 5L, 5L), 
Label = c("AdministrativeOffices", "DepartmentsDSC", "GeneralOffice", 
"InstitutionsDSC", "Ministries", "NationalBureausAMC"), class = "factor"),
GeneralOffice = c(1L, 0L, 0L, 0L, 0L, 0L), 
Ministries = c(0L, 1L, 1L, 1L, 1L, 1L), 
DepartmentsDSC = c(0L, 0L, 0L, 0L, 0L, 0L), 
AdministrativeOffices = c(0L, 0L, 0L, 0L, 0L, 0L), 
NationalBureausAMC = c(0L, 0L, 0L, 0L, 0L, 0L), 
InstitutionsDSC = c(0L, 0L, 0L, 0L, 0L, 0L), 
Law = structure(c(2L, 2L, 2L, 2L, 2L, 2L), .Label = c("CentralCommitteeoftheCPC", "NationalPeoplesCongress", "NPCStandingCommittee", "StateCouncilMeeting"), class = "factor"),
 NationalPeoplesCongress = c(1L, 1L, 1L, 1L, 1L, 1L), 
NPCStandingCommittee = c(0L, 0L, 0L, 0L, 0L, 0L),
 CentralCommitteeoftheCPC = c(0L, 0L, 0L, 0L, 0L, 0L),
 StateCouncilMeeting = c(0L, 0L, 0L, 0L, 0L, 0L),
 Function = structure(c(3L, 3L, 4L, 3L, 3L, 3L), .Label = c("EconomicManagement", "EnforcementSupervision", "GovernmentOffices", "MacroRegulation", "SocialAffairs"), class = "factor")

И это structure(dat1):

Name Born Death Age AgeGroup Alive       Type   
1    1949  1970  22        2     0 Ministries                                            
2    1949  1954   6        1     0 Ministries          
3    1949  1954   6        1     0 Ministries   
4    1949  1954   6        1     0 Ministries   
5    1949  1954   6        1     0 Ministries
6    1949  1968  20        2     0 Ministries
7    1949  2018  70        3     1 Ministries
8    1949  2018  70        3     1 Ministries 
9    1949  1959  11        2     0 Ministries 
10   1949  2018  70        3     1 Ministries
11   1949  1952   4        1     0 Ministries 

Но когда я запустил код, произошла ошибка.

Ошибка в eval (заменить (exit), data, parent.frame ()): объект 'Age' не найден. Дополнительно: предупреждающее сообщение: In max (data [[time_var]]): нет не пропущенных аргументов для max;return -Inf

В моей базе данных есть столбец "Возраст", и он числовой.Я не могу понять, что здесь происходит не так.

1 Ответ

0 голосов
/ 24 марта 2019

Проблема в том, что переменная event_var должна быть фактором (или символом) класса.Также есть проблема с примером, потому что он имеет только один уровень для переменной состояния.Если вы позволите некоторому вектору Alive быть равными 1 и сделаете его фактором, то ошибки не будет.Это довольно очевидное упущение в документации к пакету Greg.В примере виньетки не упоминается требование, но не встречается ошибка, поскольку по умолчанию data.frame используется для преобразования символьных значений в факторы, а в примерах используются символьные векторы.

dat1 <- data.frame(

Born = c(1949L,1949L, 1949L, 1949L, 1949L, 1949L), 
Death = c(1970L, 1954L, 1954L,1954L, 1954L, 1968L), 
Age = c(22, 6, 6, 6, 6, 20), 
Alive = factor( c(0L, 0L, 0L, 1L, 0L, 1L)), 
Type = structure(c(3L, 5L, 5L, 5L, 5L, 5L), 
                 Label = c("AdministrativeOffices", "DepartmentsDSC", "GeneralOffice", 
                           "InstitutionsDSC", "Ministries", "NationalBureausAMC"), class = "factor"),
GeneralOffice = c(1L, 0L, 0L, 0L, 0L, 0L), 
Ministries = c(0L, 1L, 1L, 1L, 1L, 1L), 
DepartmentsDSC = c(0L, 0L, 0L, 0L, 0L, 0L), 
AdministrativeOffices = c(0L, 0L, 0L, 0L, 0L, 0L), 
NationalBureausAMC = c(0L, 0L, 0L, 0L, 0L, 0L), 
InstitutionsDSC = c(0L, 0L, 0L, 0L, 0L, 0L), 
Law = structure(c(2L, 2L, 2L, 2L, 2L, 2L), .Label = c("CentralCommitteeoftheCPC", "NationalPeoplesCongress", "NPCStandingCommittee", "StateCouncilMeeting"), class = "factor"),
NationalPeoplesCongress = c(1L, 1L, 1L, 1L, 1L, 1L), 
NPCStandingCommittee = c(0L, 0L, 0L, 0L, 0L, 0L),
CentralCommitteeoftheCPC = c(0L, 0L, 0L, 0L, 0L, 0L),
StateCouncilMeeting = c(0L, 0L, 0L, 0L, 0L, 0L),
Function = structure(c(3L, 3L, 4L, 3L, 3L, 3L), .Label = c("EconomicManagement", "EnforcementSupervision", "GovernmentOffices", "MacroRegulation", "SocialAffairs"), class = "factor"))

spl_dat1 <-
    dat1 %>%
    timeSplitter(by = 5,
                 time_var = "Age",
                 event_var = "Alive",
                 event_start_status = "1",
                 time_related_vars = c("Born", "Death"))

Нет ошибок.Код только принуждает символьные переменные к фактору с помощью этого кода:

if (is.character(data[[event_var]])) 
    data[[event_var]] <- factor(data[[event_var]])

..., но не выполняет необходимое принуждение для числовых или целочисленных переменных.

...