2016-06-28 3 views
0

나는 다음과 같은 데이터 프레임을 말해봐 : 는 데이터 프레임을 서브 세트 - 구문에 대한 혼란

LungCap Age Height Smoke Gender Caesarean 
1 6.475 6 62.1 no male  no 
2 10.125 18 74.7 yes female  no 
3 9.550 16 69.7 no female  yes 
4 11.125 14 71.0 no male  no 
5 4.800 5 56.9 no male  no 
6 6.225 11 58.7 no female  no 

가 지금은 나이> 11와 성별은 여성입니다 모든 행을 선택합니다.

y[y$Age>11&y$Gender=="female",] 

    LungCap Age Height Smoke Gender Caesarean 
2 10.125 18 74.7 yes female  no 
3 9.550 16 69.7 no female  yes 

하지만이되지 않습니다 :

y[y$Age>11&y$Gender=="female"] 

    Age Height 
1 6 62.1 
2 18 74.7 
3 16 69.7 
4 14 71.0 
5 5 56.9 
6 11 58.7 

그렇지 않은 다른 것보다, 나는 R 아주 새로운 그리고 난이 두 번째 쿼리가 무엇을하고 있는지 이해하지 못하는이 내가 원하는 걸 얻을 수 내가 원하는 것을 나에게 준다.

답변

3

첫 번째 구문으로 데이터 프레임을 부분 집합하면 대괄호 안에있는 첫 번째 숫자 벡터 (또는 논리 벡터)는 선택하려는 행을 나타내며 두 ​​번째 쉼표()는 열을 나타냅니다.

쉼표 뒤에 아무 것도 명시 적으로 삽입하지 않으면 R은 모든 열을 원한다고 가정합니다.

쉼표를 붙이지 않아도 R은 첫 번째 숫자가 원하는 열을 나타내는 것으로 간주합니다.

y$Age>11&y$Gender=="female"은 위치 2와 3을 나타내는 논리 벡터입니다. 따라서 쉼표를 사용하지 않으면 R은 2와 3 열만 선택한다고 생각합니다. 따라서 나이와 높이를 얻습니다.

+4

예. 'data.frame'도 각 열을 포함하는'list'이기 때문에 이것을 언급 할 가치가 있습니다. 예 : -'unclass (iris)'는이 기본 구조를 보여줍니다. 따라서'dat [n] '을 선택하면리스트에서 n 번째 벡터 (즉, 열)가 반환됩니다. 비슷하게,'dat [logical_vector]'는'TRUE'에 대응하는리스트의 벡터들을 반환합니다. – thelatemail

+0

아, 그 점에 대해서는 생각해 본 적이 없습니다. 좋은 지적. – thepule

+0

당신은 내가 심지어 쉼표를 입력하지 않으면 첫 번째 숫자는 내가 원하는 열을 가리키는 것으로 가정합니다. 어떤 번호를 언급하고 있습니까? 나는 어떤 숫자도 입력하지 않았다. 나는 방금 내가 검색하고 싶은 것을 입력했다. –

관련 문제