AMcoder - javascript, python, java, html, php, sql

ստացեք յուրաքանչյուր խմբի արժեքների համամասնությունը group_by dplyr R-ից հետո

Պիթոն պանդաներում ես կարողացա պարզապես df.groupby(x,y).value_counts(normalize=True) անել՝ խմբի յուրաքանչյուր արժեքի համամասնությունը ստանալու համար: Այնուամենայնիվ, ես չկարողացա դա անելու միջոց գտնել Ռ.

Ես խմբավորել եմ իմ df-ն ըստ x-ի և y-ի և ամփոփել եմ հաճախականությունը հաշվարկելու համար, որպես այդպիսին df %>% group_by(x,y) %>% summarize(count=n()), բայց փոխարենը կցանկանայի տեսնել յուրաքանչյուր y-ի համամասնությունը յուրաքանչյուր x-ի համար:

x   y  count
1   A   22      
1   B   65      
1   C   94      
1   D   40      
2   D   34      
2   E   1       
2   F   6       
3   E   4       
3   F   13      

օրինակ, համամասնությունների նոր սյունակը պետք է ունենա

x   y   proportion
1   A   0.0995475
1   B   0.2941176
1   C   0.4253393
1   D   0.1809955
2   D   0.8292683
2   E   0.024390
2   F   0.1463415
3   E   0.2352941
3   F   0.7647059
29.03.2017

  • Ես ենթադրում եմ, որ x = 2, y = E-ի արժեքը պետք է լինի 0.024390: 30.03.2017

Պատասխանները:


1

Կարծում եմ, որ դուք պետք է խմբավորեք x-ով, որպեսզի ստանաք ձեր օրինակի արդյունքները: Ենթադրելով, որ տվյալների շրջանակը կոչվում է df1:

library(dplyr)
  df1 %>% 
  group_by(x) %>% 
  mutate(proportion = count/sum(count))
29.03.2017
  • դյուրանցում: df %>% group_by(x) %>% mutate(proportion = prop.table(count)) 30.03.2017
  • @alistaire Դա այդքան դյուրանցո՞ւմ է: եթե հաշվում եք ստեղնաշարերի տարբերությունը, ապա ձեր առաջարկն իրականում ավելի երկար է 1 նիշով: Կլինի՞ որևէ տարբերություն 2 մոտեցումների միջև հաշվողական արդյունավետության առումով: 30.03.2017

  • 2

    Այն դեպքում, երբ մեզ անհրաժեշտ է base R տարբերակ, դա կարելի է անել ave-ով

    transform(df1, proportion = count/ave(count, x, FUN = sum))[-3]
    #  x y proportion
    #1 1 A 0.09954751
    #2 1 B 0.29411765
    #3 1 C 0.42533937
    #4 1 D 0.18099548
    #5 2 D 0.82926829
    #6 2 E 0.02439024
    #7 2 F 0.14634146
    #8 3 E 0.23529412
    #9 3 F 0.76470588
    
    30.03.2017
    Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..