어제 내 질문에 reshaping matrices in R에 비슷한, 나는 지금 내 함수를 vectorize 수 있도록 데이터 프레임을 바꿀려고 해요. 아래 코드에서 주요 기능은 scorecard
입니다. subset.loans
및 subset.collateral
이라는 데이터 프레임이 필요합니다.목록 목록의 벡터화 R
LOANS COLLATERAL
id | value id | value type
---------- -------------------
1 200 1 600 a
2 4390 1 899 b
2 860 2 190 d
2 9750 3 4930 e
3 600 3 300 a
: : : : :
을이 속으로 : 나는 모두 같이 두 개의 프레임 loans
및 collaterals
을 바꿀 수 있는지 궁금
id | loans collateral
-----------------------------
1 c(200) data.frame(a=c(600,899), b=('a','b'))
2 c(4390,860,9750) data.frame(a=c(190), b=c('d'))
3 c(600) data.frame(a=c(4930,300), b=c('e','a'))
내 희망은 내가 그렇게한다면, 그때 수 *apply
기능 중 하나 또는 plyr
도구 상자 중 하나를 사용하여 간단히 scorecard
기능을 전체적으로 적용하십시오. 더 나은/쉬운 방법이 있다면, 그것을 언급하십시오! 나는 현재의 (a 황량한 for
루프) 사용하고 코드는 다음과 같습니다
# An Nx2 data frame of loans (ID, amount)
loans <- read.table(...)
# An Mx4 data frame of collaterals to loans (ID, type, value, lien)
collateral <- read.table(...)
# One person (ID) can have >1 loan and >1 collateral, so first just
# find all unique IDs
loans.ID.unique = unique(loans$ID)
# Run an analysis on each ID grouping:
for(n in 1:length(loans.ID.unique)) {
# ...all loans for that ID...
subset.loans <- loans$loans[
which(
loans$scorecard_id == loans.ID.unique[n])]
# ...all collateral for that ID...
subset.collateral <- collateral[
which(
collateral$scorecard_id == loans.ID.unique[n]),
c('type','value','lien')]
# Output scores for each ID
scores[n,1] <- loans.ID.unique[n]
scores[n,c(2,3)] <- scorecard(loans=subset.loans,
collateral=subset.collateral,
}
감사합니다!
당신은'plyr' 패키지에 자신을 소개한다. 1 단계 : 'merge'를 사용하여 데이터를 단일 data.frame으로 결합합니다. 2 단계 :'plyr :: ddply'를 사용하여 한 단계로 작업하십시오. – Andrie
@andrie - 다운로드했지만 아직 사용하지 않았습니다. (방금 R을 한 달 전에 사용하기 시작 했으므로 살펴볼 몇 가지 사항이 있습니다.)이 말은 실제로 말한 것처럼 쉽습니다. – eykanal
R 학습을 시작하면 항상 살펴볼 몇 가지 사항이 있으며 R과 함께하면 더 잘 볼 수 있습니다. 조사 할 항목 목록이 기하 급수적으로 늘어나는 것을 발견했습니다. –